Mysql
匯總來自選擇查詢的結果
我有一個三列的表:
id
,date
,state
.對於 的每個唯一值
id
,我想選擇date
和state
,將狀態數組乘以從 else 定義的每個 id 的標量變數,然後對列具有相同值的state
數組求和。date
這將如何在 mysql 語句中實現?
例子:
SELECT scal_val FROM table1 WHERE id = 413 into @scal_val; SELECT date, state * @scal_val as a FROM table2 WHERE id = 413 # now need to loop through ids in table2 for each id, adding state*@scal_val each time
表格1:
╭───╥────────────┬─────────────╮ │ ║ id │ scal_val │ ╞═══╬════════════╪═════════════╡ │ A ║ 413 │ 250 │ │ B ║ 414 │ 50 │ │ C ║ 415 │ 10 │ └───╨────────────┴─────────────┘
表2:
╭───╥────────────┬─────────────┬─────────────╮ │ ║ id │ date │ state │ ╞═══╬════════════╪═════════════╪═════════════╡ │ A ║ 413 │ 2016-01-01 │ 1 │ │ B ║ 413 │ 2016-01-02 │ 0 │ │ C ║ 413 │ 2016-01-03 │ 1 │ │ D ║ 414 │ 2016-01-01 │ 1 │ │ E ║ 414 │ 2016-01-02 │ 1 │ │ F ║ 414 │ 2016-01-03 │ 1 │ │ G ║ 415 │ 2016-01-01 │ 1 │ │ H ║ 415 │ 2016-01-02 │ 0 │ │ I ║ 415 │ 2016-01-03 │ 0 │ └───╨────────────┴─────────────┴─────────────┘
結果:
╭───╥────────────┬─────────────╮ │ ║ date │ state │ ╞═══╬════════════╪═════════════╡ │ A ║ 2016-01-01 │ 310 │ │ B ║ 2016-01-01 │ 50 │ │ C ║ 2016-01-01 │ 300 │ └───╨────────────┴─────────────┘
MySQL 版本 5.6.10
SELECT t2.`date`, SUM(t1.scal_val * t2.state) state FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id GROUP BY t2.`date`
我認為您想要的是以下內容。
SELECT table2.date, SUM(IFNULL(table1.scal_val,0) * table2.state) FROM table2 LEFT JOIN table1 ON table1.id = table2.id GROUP BY table2.date