SELECT
Income.point, Income.date, SUM(out), SUM(inc)
FROM
Income
LEFT JOIN
Outcome ON Income.point = Outcome.point
AND Income.date = Outcome.date
GROUP BY
Income.point, Income.date
UNION
SELECT
Outcome.point, Outcome.date, SUM(out), SUM(inc)
FROM
Outcome
LEFT JOIN
Income ON Income.point = Outcome.point
AND Income.date = Outcome.date
GROUP BY
Outcome.point, Outcome.date;
我有这段代码,我想做的是在加入之前进行分组。“假设我们有一个包含连接和 group-by 的 SQL 查询。评估此类查询的标准方法是首先执行所有连接,然后执行 group-by 操作。但是,执行 group-by 是可能的-by early,即将group-by操作推过一个或多个join。早期分组可以通过减少参与join的数据量来降低查询处理成本。所以我需要解释如何做到这一点
在这种情况下,练习如下:
假设每个网点(点)的钱的收入(inc)和支出(out)一天登记任意次,得到一个包含字段的结果集:网点、日期、费用、收入。
请注意,单个记录必须对应于每个日期的每个出口。
使用收入和结果表。