Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当有多个时间戳时,如何在mysql中按小时分组数据?_Mysql_Sql_Time_Timestamp - Fatal编程技术网

当有多个时间戳时,如何在mysql中按小时分组数据?

当有多个时间戳时,如何在mysql中按小时分组数据?,mysql,sql,time,timestamp,Mysql,Sql,Time,Timestamp,我有一个数据集,其中每个记录都有多个时间戳。我试图对数据集进行汇总,以按一天中的绝对小时获得每个时间戳的计数 当只有一个时间戳时,我可以按小时进行分组,但当我有多个时间戳时,我无法这样做 我目前的数据: MemberID Appointment_Time CheckIn_Time CheckOut_Time 1 12:20pm 01:30pm 05:00pm 2 09:00am

我有一个数据集,其中每个记录都有多个时间戳。我试图对数据集进行汇总,以按一天中的绝对小时获得每个时间戳的计数

当只有一个时间戳时,我可以按小时进行分组,但当我有多个时间戳时,我无法这样做

我目前的数据:

MemberID    Appointment_Time    CheckIn_Time    CheckOut_Time
1           12:20pm             01:30pm         05:00pm
2           09:00am             08:30am         04:20pm
3           12:10pm             03:30pm         05:20pm
我想要什么

Hour of the day #Appts  #CheckIns    #Checkouts
8                  0       1            0
9                  1       0            0
10                 0       0            0
11                 0       0            0
12                 2       0            0
1                  0       1            0
2                  0       0            0
3                  0       1            0
4                  0       0            1
5                  0       0            2

一种可能的解决方案是使用条件聚合(
HOUR
函数假定您使用的是日期/日期时间列):


您是否真的将文本
12:20pm
存储在表中?时间作为时间戳存储在数据库中
SELECT hourlist.hh hour_of_day
     , COUNT(CASE WHEN HOUR(Appointment_Time) = hourlist.hh THEN 1 END) appts
     , COUNT(CASE WHEN HOUR(CheckIn_Time) = hourlist.hh THEN 1 END) checkins
     , COUNT(CASE WHEN HOUR(CheckOut_Time) = hourlist.hh THEN 1 END) checkouts
FROM (
    SELECT 0 AS hh 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 hourlist
LEFT JOIN appointments ON hourlist.hh IN (HOUR(Appointment_Time), HOUR(CheckIn_Time), HOUR(CheckOut_Time))
GROUP BY hourlist.hh