栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL按小时分组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL按小时分组

您现有的查询可以简化为:

SELECt   CONCAt(HOUR(created), ':00-', HOUR(created)+1, ':00') AS Hours  ,      COUNT(*) AS `usage`FROM     historyWHERe    created BETWEEN '2012-02-07' AND NOW()GROUP BY HOUR(created)

要显示 每一个 小时,包括那些没有数据,就需要外,其所有您想要的数据小时表连接。您可以使用

UNIOn
以下命令在查询中建立这样的表:

SELECt   CONCAt(Hour, ':00-', Hour+1, ':00') AS Hours  ,      COUNT(created) AS `usage`FROM     history  RIGHT JOIN (        SELECT  0 AS Hour         UNIOn ALL SELECT  1 UNIOn ALL SELECT  2 UNIOn ALL SELECT  3         UNIOn ALL SELECT  4 UNIOn ALL SELECT  5 UNIOn ALL SELECT  6         UNIOn ALL SELECT  7 UNIOn ALL SELECT  8 UNIOn ALL SELECT  9         UNIOn ALL SELECT 10 UNIOn ALL SELECT 11 UNIOn ALL SELECT 12         UNIOn ALL SELECT 13 UNIOn ALL SELECT 14 UNIOn ALL SELECT 15         UNIOn ALL SELECT 16 UNIOn ALL SELECT 17 UNIOn ALL SELECT 18         UNIOn ALL SELECT 19 UNIOn ALL SELECT 20 UNIOn ALL SELECT 21         UNIOn ALL SELECT 22 UNIOn ALL SELECT 23  )      AS AllHours ON HOUR(created) = HourWHERe    created BETWEEN '2012-02-07' AND NOW() OR created IS NULLGROUP BY HourORDER BY Hour

但是,对于没有数据的组的处理实际上是业务逻辑的问题,最好将其放置在数据访问层而不是数据库本身中:实际上,对于您的应用程序,每隔一小时使用零值应该是微不足道的缺席。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/402858.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号