2 回答
TA貢獻1829條經驗 獲得超13個贊
因此,如果您想要按日期計算的 cricket_score 和 football_score,請檢查以下查詢是否符合您的期望
SELECT dateby, SUM(cricket_score) AS cricket_score, SUM(football_score) AS football_score
FROM (
SELECT c.dateby, c.score AS cricket_score, 0 AS football_score
FROM cricket_table AS c
WHERE c.dateby BETWEEN '2020-01-01' AND '2020-07-05'
UNION
SELECT f.dateby, 0 AS cricket_score, f.score AS football_score
FROM football_table AS f
WHERE f.dateby BETWEEN '2020-01-01' AND '2020-07-05'
) AS temp GROUP BY dateby
一種簡單易行的方法
演示:http ://sqlfiddle.com/#!18/fc606/15
輸出
dateby cricket_score football_score
2020-01-02 173 6
2020-05-02 99 21
TA貢獻1812條經驗 獲得超5個贊
你有幾個小問題:
z.dates第一行后面缺少逗號您沒有
COALESCE函數的默認值 whenallscoreisNULL您在子查詢 (
BETWEEN '2020-01-01' AND '2020-03-03') 中的日期范圍不包括cricket_table和football_table您不需要
GROUP BY外部查詢。
所以你的查詢應該是這樣的:
SELECT z.dates,
COALESCE(a.allscore, 0) AS cricket_score,
COALESCE(b.allscore, 0) AS football_score
FROM (
SELECT dateby AS dates FROM cricket_table
UNION
SELECT dateby FROM football_table
) AS z
LEFT JOIN (SELECT dateby AS dates, SUM(score) AS allscore
FROM cricket_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-05-03'
GROUP BY dates
) a USING (dates)
LEFT JOIN (SELECT dateby AS dates, SUM(score) AS allscore
FROM football_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-05-03'
GROUP BY dates
) b USING (dates)
樣本數據的輸出:
dates cricket_score football_score
2020-01-02 173 6
2020-05-02 99 21
- 2 回答
- 0 關注
- 191 瀏覽
添加回答
舉報
