帮忙想想,这个sql怎么写

ilovefisher 2005-04-29 11:19:37
现有一数据表 WEBACCESS(sqlserver)
NOTE:此表用来记录某一个学校老师和学生上网情况.
结构如下:
[ID] [bigint] IDENTITY (1, 1) NOT NULL ,//学校ID号
[SchoolName] [char] (24) , //学校名字
[RecordDate] [smalldatetime] , //记录产生日期
[WebSite] [varchar] (320) , //访问网址
[AccessTimes] [int] NOT NULL , //某一天该学校访问此网址的访问次数
[GroupName] [char] (32) //组名称("学生组","教师组","ALL"(该网站学生组也访问了,教师组也访问了))

要求生成某个时间段内的网站访问量排行榜:如下的表结构结果按网站访问量从高到低排序)
ID 网站名 教师组访问次数 学生组访问次数 合计
...全文
110 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
leeboyan 2005-04-29
  • 打赏
  • 举报
回复
不好意思,应该是这个:
select id,WebSite as 网站名,
count(case GroupName when '教师组' then 0 else 1 end)as 学生组访问次数,
count(case GroupName when '学生组' then 0 else 1 end)as 教师组访问次数,
count(case GroupName when 'all' then 2 else 1 end)as 合计
from WEBACCESS
group by id,WebSite
leeboyan 2005-04-29
  • 打赏
  • 举报
回复
这个:
select id,WebSite as 网站名,
count(case GroupName when '学生组' then 1 when 'all' then 1 else 0 end)as 学生组访问次数,
count(case GroupName when '教师组' then 1 when 'all' then 1 else 0 end)as 教师组访问次数,
count(1)as 合计
from WEBACCESS
group by id,WebSite
leeboyan 2005-04-29
  • 打赏
  • 举报
回复
try:
select id,WebSite as 网站名,
count(case GroupName when '学生组' then 1 when 'all' then 0 end)as 学生组访问次数,
count(case GroupName when '教师组' then 1 when 'all' then 0 end)as 教师组访问次数,
count(1)as 合计
from WEBACCESS
group by id,WebSite
junny1017 2005-04-29
  • 打赏
  • 举报
回复
[AccessTimes] [int] NOT NULL , //某一天该学校访问此网址的访问次数

这个怎么分教师组访问多少次,学生组访问多少次呢??
ilovefisher 2005-04-29
  • 打赏
  • 举报
回复
谢谢宝宝大哥,给了我很大启发
ilovefisher 2005-04-29
  • 打赏
  • 举报
回复
搞定了,贴出来,
SELECT WebSite as 网站名, '学生组访问次数' =sum(
case rtrim(GroupName)
when '教师组' Then 0
when 'none' Then 0
else AccessTimes

End ),
'教师组访问次数' =sum(
case GroupName
when '学生组' Then 0
when 'none' Then 0
else AccessTimes

End ),
Sum(AccessTimes) as 总访问次数

from WebAccess where RecordDate between '2005-1-1' and '2005-5-1' and block=0 group by WebSite
order by 总访问次数 desc
whao 2005-04-29
  • 打赏
  • 举报
回复
ID为自增字段,怎么能做学校ID呢?学校ID应该是唯一的呀。
ilovefisher 2005-04-29
  • 打赏
  • 举报
回复
顶一下,哪位大哥帮帮忙后遗症
ilovefisher 2005-04-29
  • 打赏
  • 举报
回复
大哥,AccessTimes是记录的该网站被访问的次数,不是时间啦,GroupName字段只是一个标志,表明该网站是被老师访问的还是被学生访问的,它服务于AccessTimes,用于累计教师组或学生组访问的总次数
leeboyan 2005-04-29
  • 打赏
  • 举报
回复
select id,WebSite as 网站名,
count(case GroupName when '教师组' then 0 else 1 end)as 学生组访问次数,
count(case GroupName when '学生组' then 0 else 1 end)as 教师组访问次数,
count(case GroupName when 'all' then 2 else 1 end)as 合计
from WEBACCESS where AccessTimes between '20050412' and '20050425'
group by id,WebSite
ilovefisher 2005-04-29
  • 打赏
  • 举报
回复
这个好像不行,AccessTimes都没有用上,它用来记录某一天该网站的访问总量,而且运行结果不正常.

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧