これは、HAVING句の後にWHERE句を持つことが可能ですか?
質問
HAVING句の後にWHERE句を使用することは可能ですか?
私の心に来る最初の事はサブクエリですが、私はよく分からない。
P.S。答えが肯定的である場合、あなたはいくつかの例を与えることができる?
解決
いいえ、同じクエリ内でます。
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句です。なぜ、HAVING句であなたのWHERE条件を入れない?
それはトリック質問だ場合は、サブクエリで、mentionnedとしてWHEREとHAVINGは、同じレベルではない場合、それが可能だ。
私はそのようなことがうまくいくと思います。
HAVING値=(MAX(値を選択)FROM FOO WHERE CRIT = 123)
p.s:なぜあなたが求めていましたか? あなたが特定の問題がありますか?
p.s.s:OK愚かな私を、私は "インタビュー*" を逃したタグ...
SELECTヘルプから
処理順序、GROUP BY、 および句には、次の手順をHAVING SELECTの処理順序を示し、 WHERE句、GROUPとの声明 句、およびHAVING句BYます:
FROM句初期を返します。 結果セットます。
WHERE句は行を除外しません その検索条件を満たしています。
GROUP BY句を収集します それぞれについて1つのグループに行を選択 GROUP BY句に一意の値ます。
で指定された集計機能 選択リスト計算の集計値 グループごとにます。
さらにHAVING節 その検索を満たしていない行を除外 条件ます。
だから、なしあなたがいないことができます。
同じスコープ内では、答えはノーです。サブクエリが許可されているなら、あなたは完全にHAVING
の使用を避けることができます。
私はHAVING
は時代錯誤だと思います。ヒューダーウィンは、「構造化クエリのフォリー」としてHAVING
指す
古いSQLでは、
WHERE
句はできませんでした そう、集計の結果に使用すること それらは同じで(HAVING
を発明しなければなりませんでした )WHERE
として意味:SELECT D#, AVG(Salary) AS Avg_Sal FROM Emp GROUP BY D# HAVING AVG(Salary) > 999;
しかし、我々はこれまでならば
HAVING
なければならなかったでしょう 1979年に1は書くことができます:SELECT * FROM ( SELECT D#, AVG(Sal) AS Avg_Sal FROM Emp GROUP BY D# ) AS dummy WHERE Avg_Sal > 999;
私は強くダーウィンの質問への答えを疑うノーです。