请教如何用SQL对每个小时内的数据进行统计?求高手指点,谢谢!
假如现在有个表A,里面有字段:时间、号码,如下:2011-01-2300:23:34a2011-01-2300:35:31a2011-01-2302:44:34a2011...
假如现在有个表A,里面有字段:时间、号码,如下:
2011-01-23 00:23:34 a
2011-01-23 00:35:31 a
2011-01-23 02:44:34 a
2011-01-23 02:52:12 b
2011-01-23 04:23:34 c
2011-01-23 04:11:03 d
2011-01-23 04:05:34 c
2011-01-23 05:23:21 b
1、现在需要统计出每个小时内的数量(不剔重),比如最终结果为:
2011-01-23 00 2
2011-01-23 02 2
2011-01-23 04 3
2011-01-23 05 1
2.需统计出每小时内的不重复的数量,比如最终结果为:
2011-01-23 00 1
2011-01-23 02 2
2011-01-23 04 2
2011-01-23 05 1 展开
2011-01-23 00:23:34 a
2011-01-23 00:35:31 a
2011-01-23 02:44:34 a
2011-01-23 02:52:12 b
2011-01-23 04:23:34 c
2011-01-23 04:11:03 d
2011-01-23 04:05:34 c
2011-01-23 05:23:21 b
1、现在需要统计出每个小时内的数量(不剔重),比如最终结果为:
2011-01-23 00 2
2011-01-23 02 2
2011-01-23 04 3
2011-01-23 05 1
2.需统计出每小时内的不重复的数量,比如最终结果为:
2011-01-23 00 1
2011-01-23 02 2
2011-01-23 04 2
2011-01-23 05 1 展开
2个回答
展开全部
select '2011-01-23 00:23:34' 日期 ,'a' 内容 into #temp union
select '2011-01-23 00:35:31','a' union
select '2011-01-23 02:44:34','a' union
select '2011-01-23 02:52:12','b' union
select '2011-01-23 04:23:34','c' union
select '2011-01-23 04:11:03','d' union
select '2011-01-23 04:05:34','c' union
select '2011-01-23 05:23:21','b'
select convert(varchar(13),日期,120),count(内容)
from #temp
group by convert(varchar(13),日期,120)
select convert(varchar(13),日期,120),count(distinct 内容)
from #temp
group by convert(varchar(13),日期,120)
select '2011-01-23 00:35:31','a' union
select '2011-01-23 02:44:34','a' union
select '2011-01-23 02:52:12','b' union
select '2011-01-23 04:23:34','c' union
select '2011-01-23 04:11:03','d' union
select '2011-01-23 04:05:34','c' union
select '2011-01-23 05:23:21','b'
select convert(varchar(13),日期,120),count(内容)
from #temp
group by convert(varchar(13),日期,120)
select convert(varchar(13),日期,120),count(distinct 内容)
from #temp
group by convert(varchar(13),日期,120)
展开全部
1)
select 时间, count(号码) from A
GROUP BY to_char(时间, 'yyyy-mm-dd hh')
2)
select 时间, count(distinct 号码) from A
GROUP BY to_char(时间, 'yyyy-mm-dd hh')
to_char(时间, 'yyyy-mm-dd hh')
不同数据库这里不一样,就是把小时提取出来就可以了,不同数据库系统要做相应转换
select 时间, count(号码) from A
GROUP BY to_char(时间, 'yyyy-mm-dd hh')
2)
select 时间, count(distinct 号码) from A
GROUP BY to_char(时间, 'yyyy-mm-dd hh')
to_char(时间, 'yyyy-mm-dd hh')
不同数据库这里不一样,就是把小时提取出来就可以了,不同数据库系统要做相应转换
更多追问追答
追问
请问为什么运行时系统提示'to_char' 不是可以识别的 函数名。
追答
因为你的数据库不支持吧,这里你想个办法拿到yyyy-mm-dd hh就可以了
实在不行substring都可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询