读书人

求高手 sql 按分钟统计解决思路

发布时间: 2012-04-20 15:27:03 作者: rapoo

求高手 sql 按分钟统计
IDRegisterDate RegisterTime StudiesDoneDate StudiesDoneTime
12008032015231420080320152629
22008032015242520080320153100
32008032015311320080320153543
42008032015333920080320154206
52008032015470320080320155504
62008032015491020080320155417
72008032015504120080320160022
有一个月的数据,几十万条,现在我想统计每天8:00-17:00每分钟该时刻前面有多少个已经登记(RegisterTime)的但是还没检查(StudiesDoneTim)的人次。统计结果插入到新表中。
得到的统计表:
RegisterDate 8:01 8:02 8:03 .... 16:59 17:00
20080301 人数 人数 .... 人数 人数
20080302
..
..
这只是我自己设计的统计表,问下高手这样设计 列数会不会太多,是否还有其他的设计方法

[解决办法]

探讨
IDRegisterDate RegisterTime StudiesDoneDate StudiesDoneTime
12008032015231420080320152629
22008032015242520080320153100
32008032015311320080320153543
42008032015333920080320154206……

[解决办法]
行转列,看经典代码收藏。
[解决办法]
SQL code
select datediff(mi,'2012-01-01 08:00:00','2012-01-01 17:00:00')+1-----------541(1 row(s) affected)
[解决办法]
需要的太多了吧。你用的完吗

人家看的来这么多吗
[解决办法]
建议在前端程序中统计,以数组的形式保存结果,

然后,然后绘制曲线图.
[解决办法]
你讲的不是很清楚啊
[解决办法]
唐诗哥哥给的意见不错。你这个假如在数据库段进行行列转换的话实现也是可以的,
但是那样很不好,有好几百个字段

探讨

大家多给给点意见啊,小弟求教

[解决办法]
楼主那样设计,只是扩展性不好,以后你想增加某一时间点的统计,就要增加字段,这样导致之前数据存在null值或0值。相同的道理,减少某一时间点的统计,也会出现null值或0值的情况。

如果按每一天每一个时间点,设计成一行。对于扩展性就比较好。只是要考虑在数据量大的情况,行列转换的成本。

结合实际环境,对这两点做评估,你自然会找到哪一种设计比较好。

读书人网 >SQL Server

热点推荐