每次在DISTINCT值上的SQL SUM

时间:2014-10-11 00:40:18

标签: mysql sql date sum distinct

我有下表。第一列是Object Id,然后是对象大小,最后是特定对象的销售时间。

Object  Price           Moment
   A    100     2014-10-10 22:12:00
   B    105     2014-10-10 22:12:44
   A    100     2014-10-10 22:14:12
   C    203     2014-10-10 22:15:02
   B    105     2014-10-10 22:17:34
   D    68      2014-10-10 22:42:01
   C    203     2014-10-10 22:43:02

通过使用以下sql,我得到所有对象的价格总和,每15分钟售出一次。

SELECT
Date(Moment)  Date,
sec_to_time(time_to_sec(Moment) - time_to_sec(Moment)%(15*60)) 15MinInterval,
Sum(Price) PriceSum
FROM table
GROUP BY
    Date,
    15MinInterval
ORDER BY
    Date,
    15MinInterval

这很有效,我得到的结果是:

2014-10-10 22:00:00 305
2014-10-10 22:15:00 308
2014-10-10 22:30:00 271

我需要的是,我找不到一种方法,就是每15分钟计算一次所有DISTINCT对象的价格总和。因此,对于特定的表,我需要得到以下结果:

2014-10-10 22:00:00 205
2014-10-10 22:15:00 308
2014-10-10 22:30:00 271

你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

尝试在子查询中使用DISTINCT

SQL小提琴http://sqlfiddle.com/#!2/fc040/9

SELECT
Date,
15Interval 15MinInterval,
Sum(Price) PriceSum
FROM
(SELECT  DISTINCT
OBJECT,
Price,
Date(Moment)  Date,
sec_to_time(time_to_sec(Moment) - time_to_sec(Moment)%(15*60)) AS 15Interval
FROM mytable) temp
GROUP BY
    Date,
    15MinInterval
ORDER BY
    Date,
    15MinInterval

输出

enter image description here