以下是数据样本表
ID MC BC TIME AB AT
1 4 10 2016-12-05 09:02:00 5 8
2 4 20 2016-12-15 09:03:00 2 3
3 4 10 2016-12-15 09:02:00 1 4
4 4 20 2016-12-25 09:02:00 3 6
5 4 05 2016-12-05 09:02:00 4 2
6 4 05 2016-12-08 09:02:00 6 2
7 4 10 2016-12-11 09:02:00 7 6
8 4 10 2016-12-05 09:02:00 9 8
9 4 10 2016-12-15 09:02:00 9 8
10 4 10 2016-12-15 09:05:00 10 20
11 5 10 2016-12-15 09:05:00 10 20
12 5 10 2016-12-15 09:05:00 10 20
13 5 10 2016-12-15 09:05:00 10 20
如果我查询的地点' MC' = 4和' TIME'像2016-12%
那样我想要' AB'和' AT'列根据“时间”和“时间”合并列和每个BC'有单独的一天合并。
如同样本输出第15天有两个' BC' (10,20)他们有两排不同。
我想要像这样的输出
ID MC BC TIME AB AT
1 4 10 2016-12-05 14 16
2 4 10 2016-12-11 7 6
3 4 10 2016-12-15 20 32
4 4 20 2016-12-15 2 3
5 4 20 2016-12-25 3 6
6 4 05 2016-12-05 4 2
7 4 05 2016-12-08 6 2
表中当前月份的行数超过200万行,如样本表中所示。
答案 0 :(得分:0)
SELECT MC,
BC,
DATE(`TIME`) AS 'Day'
SUM(AB) AS AB,
SUM(AT) AS AT
FROM tbl
WHERE `TIME` >= '2016-12-01`
AND `TIME` < '2016-12-01` + INTERVAL 1 MONTH
AND MC = 4
GROUP BY MC, BC, DATE(`TIME`);
这很有用:
INDEX(MC, `TIME`)