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;
私がやりたいのは、参加する前にグループ化することです。「結合とグループ化を含む SQL クエリがあると仮定します。このタイプのクエリを評価する標準的な方法は、最初にすべての結合を実行し、次にグループ化操作を実行することです。ただし、グループ化を実行できる場合があります。 -by アーリー、つまり、group-by 操作を 1 つ以上の結合を超えてプッシュします。アーリー グループ化は、結合に関与するデータの量を減らすことによって、クエリ処理コストを削減する可能性があります。だから私はそれを行う方法の説明が必要です
この場合の運動は次のとおりです。
各アウトレット (ポイント) でのお金の収入 (inc) と費用 (out) が 1 日に何度でも登録されると仮定して、フィールド: アウトレット、日付、費用、収入の結果セットを取得します。
1 つのレコードが各日付の各アウトレットに対応している必要があることに注意してください。
収入と結果の表を使用します。