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
函数的默认值 whenallscore
isNULL
您在子查询 (
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 关注
- 174 浏览
添加回答
举报