Php 基于日期和另一个字段合并Mysql查询中的表行数据。表的行数超过2M
这是数据的示例表Php 基于日期和另一个字段合并Mysql查询中的表行数据。表的行数超过2M,php,mysql,date,optimization,Php,Mysql,Date,Optimization,这是数据的示例表 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:
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%
,那么我希望根据'TIME'列中的日期合并'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万行,如示例表中所示。AB和AT是如何计算的?简言之,向我们展示您用于计算的公式,您的问题对我来说不清楚,请快速回答。对于AB和AT计算,我们将一行的AB值与“时间”中具有相同“BC”和相同日期的其他行相加。与输出数据的第一行一样,我们添加了示例表第一行和第八行的“AB”。因为他们有同一天的《时代》节目,谢谢里克·詹姆斯,这部电影为我工作,我真的很感谢你们。
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`)