簡體   English   中英

根據日期和另一個字段在Mysql查詢中合並表行數據。 表格中的行數超過2M

[英]Merge Table Rows Data in Mysql query based on date and one other field. Table have more than 2M rows

這是數據示例表

  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萬行,如示例表中所示。

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`)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM