求一很棘手的SQL语句,揭帖就给分!
以下是我的表结构:
id username time accessmsg equipment
85 admin 2005-08-04 09:41:20.967 登录系统 IE v.6.0 Win2000
86 admin 2005-08-04 09:42:01.577 登录系统 IE v.6.0 Win2000
87 001 2005-08-04 09:44:10.060 上传文件 IE v.6.0 Win2000
88 admin 2005-08-04 09:51:30.920 登录系统 IE v.6.0 Win2000
89 001 2005-08-04 09:52:56.373 上传文件 IE v.6.0 Win2000
90 admin 2005-08-04 09:56:08.827 登录系统 IE v.6.0 Win2000
91 001 2005-08-04 10:03:58.873 登录系统 IE v.6.0 Win2000
92 001 2005-08-04 10:09:14.217 登录系统 IE v.6.0 Win2000
93 admin 2005-08-04 10:33:54.077 登录系统 IE v.6.0 Win2000
94 admin 2005-08-04 10:37:38.043 登录系统 IE v.6.0 Win2000
以上是我的表结构,我用的是sql数据库,我用一条sql语句得到下面的效果,这条语句怎么写呀,很急的!
用户名 登陆系统次数 上传文件次数
admin 6 0
001 2 2
问题点数:25、回复次数:6Top
1 楼jin1002(李锦)回复于 2005-08-04 12:03:37 得分 2
以前面试考过
但做不出来
嘿嘿Top
2 楼pontus(pontus)回复于 2005-08-04 12:07:12 得分 3
select username,count(username) from [table] group by usernameTop
3 楼icedut(冰-装修进行中)回复于 2005-08-04 12:24:05 得分 10
如果是sqlserver数据库 用case函数可以结决
select username,sum(case accessmsg when '登录系统' then 1 else 0 end) as 登陆系统次数,
sum(case accessmsg when '上传文件' then 1 else 0 end) as 上传文件次数,
from [table] group by username
Top
4 楼plghqr(somit)回复于 2005-08-04 12:27:14 得分 5
SELECT distinct userName,(SELECT Count(*) FROM [table] WHERE UserName=A.UserName AND accessmsg='登录系统') As LoginTimes,(SELECT Count(*) FROM [table] WHERE UserName=A.UserName AND accessmsg='上传文件) As UpFileTimes FROM [table] AS ATop
5 楼jin1002(李锦)回复于 2005-08-04 12:38:49 得分 5
在Oracle里可以这样:
SELECT A.USERNAME,A.LOGINTIMES,B.UPFILETIMES FORM
(SELECT USERNAME,COUNT(accessmsg) FROM [TABLE] WHERE USERNAME IN (SELECT DISTINCT USERNAME
FROM [TABLE] ) AND accessmsg='登录系统' GROUP BY USERNAME ) A,
(SELECT USERNAME,COUNT(accessmsg) FROM [TABLE] WHERE USERNAME IN (SELECT DISTINCT USERNAME
FROM [TABLE] ) AND accessmsg='上传文件' GROUP BY USERNAME ) B
WHERE A.USERNAME=B.USERNAMETop
6 楼Teng_s2000(分涨的太慢,升星难啊!!)回复于 2005-08-04 13:59:09 得分 0
plghqr(somit)的语句在sql2000中可以执行!
学习了一个语句。^_^Top




