HAVING 句の後に WHERE 句を使用することはできますか?
最初に頭に浮かぶのはサブクエリですが、よくわかりません。
PS 答えが肯定の場合、いくつか例を挙げていただけますか?
いいえ、同じクエリではありません。
where
節はhaving
と の前に置かれgroup by
ます。グループ化の前にレコードを除外したい場合は条件をwhere
句に入れ、グループ化されたレコードを除外したい場合は条件をhaving
句に入れます。
select ...
from ...
where ...
group by ...
having ...
where
奇妙な理由でどちらも使用できない場合は、クエリをサブクエリにして、外側のクエリに句を入れることができるようにする必要があります。
select ...
from (
select ...
from ...
where ...
group by ...
having ...
) x
where ...
HAVING 句は、GROUP BY の後の単なる WHERE 句です。WHERE 条件を HAVING 句に入れてみませんか?
ひっかけ問題なら、おっしゃる通りサブクエリでWHEREとHAVINGが同レベルでない場合もありえます。
私はそのようなものがうまくいくと思います
HAVING value=(SELECT max(value) FROM foo WHERE crit=123)
ps:なぜあなたは尋ねたのですか?特定の問題がありますか?
pss: ばかな私、「インタビュー*」タグを見逃していました...
SELECT ヘルプから
WHERE、GROUP BY、および HAVING 句の処理順序 次の手順は、WHERE 句、GROUP BY 句、および HAVING 句を含む SELECT ステートメントの処理順序を示しています。
FROM 句は初期結果セットを返します。
WHERE 句は、検索条件を満たさない行を除外します。
GROUP BY 句は、GROUP BY 句の一意の値ごとに、選択した行を 1 つのグループに収集します。
選択リストで指定された集計関数は、各グループの集計値を計算します。
さらに、HAVING 句は、検索条件を満たさない行を除外します。
だから、できません。