跪求 sql 时间 分组 查询

zhaoguangxu 2009-10-16 09:24:07
各位大哥,我没有分,我去回复了别人的帖子,可是还是没分,我上传了一个头像才勉强得到10分,所以请大哥大姐原谅~~

我现在数据库里MINI字段每5分钟就有一条记录

我现在想查询其中一天的数据,同时以小时分组娶每小时中最小的一条数据(一小时有12条数据)

大概是下面这种形式


SELECT MIN(ServerTime) AS ServerTime, X, Y
FROM Wow_PhoneDate
GROUP BY DATEPART(hh, ServerTime), X, Y, Mini
HAVING (Mini = '123456789223456')

上面的可以实现以小时分组,但是需要到是那一天就不可以了,同时改数据库量上亿条,我希望有高的效率查询

我除了查其中一天,有时候还需要查那天那点的数据, 希望各位大哥能帮帮小弟,不胜感激!

SELECT MIN(ServerTime) AS ServerTime, X, Y
FROM Wow_PhoneDate
GROUP BY DATEPART(hh, ServerTime), X, Y, Mini
HAVING (Mini = '123456789223456') AND (CONVERT(varchar(10), ServerTime, 23)
= '2009-09-24')
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bancxc 2009-10-16
  • 打赏
  • 举报
回复
SELECT MIN(ServerTime) AS ServerTime, X, Y 
FROM Wow_PhoneDate
where (Mini = '123456789223456') AND (CONVERT(varchar(10), ServerTime, 23)
= '2009-09-24')
GROUP BY DATEPART(hh, ServerTime), X, Y, Mini
7761098 2009-10-16
  • 打赏
  • 举报
回复

SELECT MIN(ServerTime) AS ServerTime, X, Y
FROM Wow_PhoneDate
GROUP BY DATEPART(dd, ServerTime), X, Y, Mini
HAVING (Mini = '123456789223456') AND (CONVERT(varchar(10), ServerTime, 23)
= '2009-09-24')

是这个要求吗?
不过这么大数据量,其实你可以考虑一下分表的,不然上亿条数据的汇总也很恐怖
bancxc 2009-10-16
  • 打赏
  • 举报
回复
--查其中一天,有时候还需要查那天那点的数据,
用where过滤啊
SQL77 2009-10-16
  • 打赏
  • 举报
回复
SELECT * FROM TB T WHERE NOT EXISTS
(SELECT * FROM TB WHERE
CONVERT(VARCHAR(10),TIME,120)= CONVERT(VARCHAR(10),T.TIME,120) AND DATEPART(HH,TIME)<DATEPART(HH,T.TIME))
dawugui 2009-10-16
  • 打赏
  • 举报
回复
最好给出表结构,测试数据,计算方法和正确结果.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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