質問

HAVING句の後にWHERE句を使用することは可能ですか?

私の心に来る最初の事はサブクエリですが、私はよく分からない。

P.S。答えが肯定的である場合、あなたはいくつかの例を与えることができる?

役に立ちましたか?

解決

いいえ、同じクエリ内でます。

where句がhavinggroup 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;

私は強くダーウィンの質問への答えを疑うノーです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top