MYSQL HAVINGの使い方とトレーニング

1276 ワード

MYSQL HAVINGの使い方とトレーニング
HAVING-ヒント
HAVINGは、集約されたクエリーをフィルタリングする「クリーン」方式ですが、通常はサブクエリー方式で実現されます.本質的には、集約によって作成されたクエリーの要素に対してWHERE条件を実行するには、HAVINGを使用する必要があります.
  • HAVINGは常にGROUP BY文の後にある
  • を使用する.
     
    練習:HAVING
    WHEREとHAVINGの違いに戸惑うことがよくあります.HAVINGとWHEREの文については、以下のすべての正しい文を選択してください.
  • WHEREサブセットは、論理条件に従って返されたデータをフィルタリングする.
  • WHEREはFROM,JOIN,ON条件の後に現れるがGROUP BYより前になる.
  • HAVINGはGROUP BY条件の後に現れるが、**ORDER BY条件の前に現れる.
  • HAVINGはWHEREと似ていますが、集約に関連する論理文に適しています.

  • これらの文はすべて正しいです.これらの文は、クエリ内の文がどの位置にあるか、特定の文を使用する理由を知っていることを確認します.'
    質問:
  • 販売担当者は5人以上の顧客を管理する必要がありますか?
  • で20以上の注文を持っているお客様は何人いますか?
  • どのお客様の注文が一番多いですか?
  • すべての注文で消費された総額が30000ドルを超えた顧客は何人いますか?
  • すべての注文で消費された総額が1000ドル未満の顧客は何人いますか?
  • どのお客様が最も消費していますか?
  • どのお客様が最も消費していますか?
  • どのお客様がfacebookを消費者とのコミュニケーションのルートとして6回以上使用していますか?
  • どのお客様がfacebookをコミュニケーションチャネルとして使用した回数が最も多いですか?
  • どのチャネルがお客様が最もよく使うチャネルですか?

  • ソリューション:HAVING
  • 販売担当者は5人以上の顧客を管理する必要がありますか?
  • SELECT s.id, s.name, COUNT(*) num_accounts
    FROM accounts a
    JOIN sales_reps s
    ON s.id = a.sales_rep_id
    GROUP BY s.id, s.name
    HAVING COUNT(*) > 5
    ORDER BY num_accounts;