如何使用datetime作为计数器来循环遍历多个行

时间:2016-06-07 15:17:18

标签: mysql sql

我的问题并不是很好,但下面应该更好地解释

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小时

1 个答案:

答案 0 :(得分:0)

这是一个如何每隔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;

最好你做一个" trunc_minut_function"使用此SQL,然后在num_Sold中使用GROUP BY和SUM。

类似

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