MySQL查询,查找一天中住房协会访问次数最多的时间



住房协会访问数据

进入时间退出时间2021年7月2608:23:06<2021年07月26日8:14:44><115>2021年7月2611:14:44>
Id 联系人停留时间
1 8080808080 2021年7月26日08:00:05181
2 9692596925 2021年7月26日08:12:49
3 7099720092 2021年7月26日11:02:49715
4 8900289002 2021年7月26日16:12:49 2022年7日26日16:14:44 115
5 9089590895 2021年7月26日15:12:49 2021年7月2615:14:44 115
6 8765087650 2021年7月26日19:12:49 2021年7月2619:14:44 115
7 7862178621

当我读到这个问题时,这将对你有很大帮助。有几件事你可以做来改善这个tho:

  • 创建单独的小时表以避免并集(或使用数字表(
  • 单独存储时间,TIME((方法会减慢查询速度

SELECT 
hours.`hour`,
COUNT(occurrence.perfId) AS occurrences
FROM (
SELECT '00:00' AS `hour`
UNION SELECT '01:00'
UNION SELECT '02:00'
UNION SELECT '03:00'
UNION SELECT '04:00'
UNION SELECT '05:00'
UNION SELECT '06:00'
UNION SELECT '07:00'
UNION SELECT '08:00'
UNION SELECT '09:00'
UNION SELECT '10:00'
UNION SELECT '11:00'
UNION SELECT '12:00'
UNION SELECT '13:00'
UNION SELECT '14:00'
UNION SELECT '15:00'
UNION SELECT '16:00'
UNION SELECT '17:00'
UNION SELECT '18:00'
UNION SELECT '19:00'
UNION SELECT '20:00'
UNION SELECT '21:00'
UNION SELECT '22:00'
UNION SELECT '23:00'    
) hours
LEFT JOIN YOUR_TABLE occurrence ON hours.`hour` BETWEEN TIME(occurrence.Entry_time) AND TIME(occurrence.Exit_time)
GROUP BY hours.`hour`
ORDER BY occurrences DESC

将产生(来自测试数据库的数据(:

[hour] [occurrences]
10:00   73554
11:00   67492
09:00   65679
08:00   63886
13:00   63565
12:00   62525
07:00   61500
14:00   53095
15:00   49017
16:00   41955
17:00   31991
18:00   21251
06:00   17591
19:00   13717
20:00   8532
21:00   4421
22:00   2050
23:00   818
05:00   796
04:00   561
01:00   175
03:00   123
02:00   120
00:00   23

要只获取一个小时,只需结束查询并选择第一个:

SELECT hour FROM (
# Paste query from above here...
) hourData
LIMIT 1;

我能够使用以下查询获得所需的输出:
SELECT HOUR(Entry_time(as hr FROM table_name GROUP BY HOUR(Entry_time(ORDER BY COUNT(*(DESC LIMIT 1
感谢@nicholacary:SQL的解决方案来确定全天的峰值音量和小时数

相关内容

  • 没有找到相关文章

最新更新