汇总问题
例如有这样一个表:
第一行为列名:
id name num addtime
1 a 10 2005-9-5
2 b 20 2005-9-6
3 b 30 2005-9-8
4 a 5 2005-9-10
5 a 12 2005-9-11
6 a 35 2005-9-11
7 b 25 2005-9-12
假如今天的日期是 2005-9-12 需要查询5天内a和b的num总和.
结果应该是:
a 52
b 45
请问查询语句应该如何写?
问题点数:20、回复次数:10Top
1 楼yiyiguxing(一意孤行)回复于 2005-10-24 23:00:17 得分 0
说明一下,表大约有几万行,name列不是光a和b,要有几千个不同的name值Top
2 楼singlepine(小山)回复于 2005-10-24 23:04:00 得分 0
select name, num=sum(num) from a where addtime>=dateadd(day,-5,addtime) and addtime<=getdate() group by nameTop
3 楼singlepine(小山)回复于 2005-10-24 23:04:45 得分 0
select name, num=sum(num) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=getdate() group by name
Top
4 楼lxzm1001(*~悠悠蓝星梦~*)回复于 2005-10-24 23:06:45 得分 0
select name,sum(num) from tablename group by name where addtime between dateadd(day,addtime,-5) and addtimeTop
5 楼yiyiguxing(一意孤行)回复于 2005-10-24 23:16:00 得分 0
感谢楼上的解答,是我没把问题分析清楚.
查询结果应该是5天内按name列的重复次数排序.比如上面的表5天内a重复了3次,b重复了2次.那结果按倒序的话应该是:
a
bTop
6 楼singlepine(小山)回复于 2005-10-24 23:31:36 得分 15
select name, num=sum(num) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=getdate()
group by name order by count(num) descTop
7 楼lxzm1001(*~悠悠蓝星梦~*)回复于 2005-10-24 23:36:39 得分 5
select count(name) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=addtime group by nameTop
8 楼lxzm1001(*~悠悠蓝星梦~*)回复于 2005-10-24 23:37:13 得分 0
select count(name) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=addtime group by name order by name descTop
9 楼vivianfdlpw()回复于 2005-10-24 23:41:30 得分 0
select name
,sum(case when datediff(day,addtime,getdate())<=5
then num
else 0
end
) as 'num'
from 表 t
group by name
order by (select count(1)
from 表
where name=t.name
and datediff(day,addtime,getdate())<=5) desc
or
select name
,num
from (
select name
,sum(case when datediff(day,addtime,getdate())<=5
then num
else 0
end
) as 'num'
,count(1) as 'count'
from 表
group by name
)t
order by [count] desc
Top
10 楼yiyiguxing(一意孤行)回复于 2005-10-25 22:20:16 得分 0
感谢所有给予热情帮助的朋友.
vivianfdlpw朋友的方案复杂了点儿,小弟没弄明白,所以没给分,十分抱歉,一并表示感谢.Top




