0

4回目http://sqlzoo.net/wiki/SUM_and_COUNT_Quiz#quiz0から質問を頂きました。私は 2 番目のオプションを選択しましたが、5 番目のオプションが正解であることがわかりました。このSQL文が間違っている理由がわかりません。誰でも理由を教えてもらえますか?前もって感謝します。

SQL 文を以下に示します。

SELECT region, SUM(area)
FROM bbc 
WHERE SUM(area) > 15000000 
GROUP BY region

この問題に対する答えが「WHERE 関数の無効な使用による結果なし」である理由は何ですか?

4

3 に答える 3

1

その理由を理解するには、大まかに次のような論理クエリ処理順序を見てください。

  1. から
  2. どこ
  3. グループ化
  4. 持っている
  5. 選択する
  6. オーダーバイ

WHEREが前に来るGROUP BYため、集計関数を直接使用することはできません。それがHAVING条項の目的です。

于 2013-11-04T02:24:17.480 に答える
1

WHERE 句で SUM(area) を使用することはできません。

それを有効にするには、GROUP BY の後に HAVING を使用する必要がありました。

SELECT region, SUM(area) FROM bbc GROUP BY region HAVING SUM(area) > 15000000;
于 2013-11-04T02:14:21.097 に答える