私はSQLに新しいので、私はクエリでWHERE句とHAVING句の両方を使用すると、HAVING句の条件の順序が重要になるのではないかと思います。たとえば、次のクエリ(ブックから取り出す)では、まったく同じですか? WHERE句ですでにフィルタリングされているGROUPデータにHAVINGを適用すると、SUM()関数はフィルタリングされたデータにのみ適用されます。ただし、2番目の問合せでは、WHERE句が事前に適用されておらず、HAVING句の最後にInvoiceDate BETWEEN '2016-01-01' AND '2016-01-31'という条件が適用されるため、SUM()は最初のクエリとは異なるすべてのデータから計算します。私はそれを正しく理解していますか?Having句の条件の順序はSQLで重要ですか?
-- First Query
SELECT
InvoiceDate,
COUNT(*) AS InvoiceQty,
SUM(InvoiceTotal) AS InvoiceSum
FROM
Invoices
WHERE
InvoiceDate BETWEEN '2016-01-01' AND '2016-01-31'
GROUP BY
InvoiceDate
HAVING
COUNT(*) > 1
AND SUM(InvoiceTotal) > 100
ORDER BY
InvoiceDate DESC;
-- Second Query
SELECT
InvoiceDate,
COUNT(*) AS InvoiceQty,
SUM(InvoiceTotal) AS InvoiceSum
FROM
Invoices
GROUP BY
InvoiceDate
HAVING
COUNT(*) > 1
AND SUM(InvoiceTotal) > 100
AND InvoiceDate BETWEEN '2016-01-01' AND '2016-01-31'
ORDER BY
InvoiceDate DESC;