【问题标题】:How to group data by hour of the day in mysql when there are multiple timestamps? [closed]当有多个时间戳时,如何在mysql中按一天中的小时对数据进行分组? [关闭]
【发布时间】:2019-02-01 07:52:47
【问题描述】:

我有一个数据集,其中每条记录都有多个时间戳。我正在尝试汇总数据集,以按一天中的绝对小时计算每个时间戳。

当只有一个时间戳时,我可以按小时分组,但当我有多个时间戳时,我不能这样做。

我目前的数据:

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

【问题讨论】:

  • 您是否真的将文本 12:20pm 存储在您的表格中?
  • 时间作为时间戳存储在数据库中

标签: mysql sql time timestamp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-11-12
    • 1970-01-01
    • 2021-05-20
    • 2018-08-15
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多