【问题标题】:How to keep looping through a number of rows using the datetime as the counter [duplicate]如何使用日期时间作为计数器来循环遍历多行[重复]
【发布时间】:2016-10-07 14:03:59
【问题描述】:

我的问题没有很好地放在一起,但下面应该更好地解释它

SELECT time(starttime) AS time, num_Sold
FROM shop_1
WHERE (CAST( starttime AS date )='2016-06-07' 
AND time(starttime)>'07:00:00' AND zone_name='till_1')

这会打印出以下内容

    start        No.
    Time        Sold
    07:00:00     0
    07:05:00     0
    07:10:00     0
    07:15:00     1
    07:20:00     2
    07:25:00     9
    07:30:00     8
    07:35:00     8
    07:40:00     4
    07:45:00     1
    07:50:00    10
    07:55:00    10
    08:00:00    19    

现在我想总结半小时内售出的数量,因此从 7:00:00 到 7:29:59(7.25 将是从 5 分钟到 7:30 的开始时间)。我怎样才能遍历半小时块。

所以我想要一个结果

    07:00:00     12
    07:30:00     41
    ....

可以是从 07:00 开始的 1/2 小时或从 07:30 结束的 1/2 小时

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    这是一个示例,说明如何每 5 分钟截断一次日期。

    select trunc(TO_DATE('07/06/2016 10:22:05', 'DD/MM/YYYY HH:MI:SS'), 'mi')
      - mod(EXTRACT(minute FROM cast(TO_DATE('07/06/2016 10:22:05', 'DD/MM/YYYY HH:MI:SS') as timestamp)), 5) / (24 * 60)
        from dual;
    

    你最好用这个 SQL 做一个“trunc_minut_function”,然后在你的 num_Sold 中使用带有 SUM 的 GROUP BY。

    类似

    select trunc_minut_function(starttime), SUM(num_Sold) .....
    GROUP BY trunc_minut_function(starttime)
    

    【讨论】:

    • 出于好奇,trunc_minut_function函数如何实现?
    猜你喜欢
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多