SQL - Having句

こんにちは、未来のSQL魔術師たち!今日は、SQLのHAVING句の世界に興味深い旅をすることになります。あなたの近所の親切なコンピュータ教師として、この冒険を一歩一歩ガイドしますので、ビルタルなメモ padsを手に取り、一緒に潜りましょう!

SQL - Having Clause

SQLのHAVING句

パーティを計画しているとしますが、あなたと5人以上の共通の友達がいる友人だけを招待したい場合、それはまさにSQLのHAVING句がやることです。HAVING句は、特定の条件に基づいてグループの結果をフィルタリングしてくれます。

HAVING句は、データパーティの玄関のボーイのように思ってください。あなたが設定した規則に基づいて、どのデータグループが入場できるかを決定します。以下に簡単な例を見てみましょう:

SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;

この例では、各部署の平均給与を見ていますが、平均給与が50,000ドル以上の部署だけを表示したい場合、HAVING句がボーイとして、各グループ(部署)をチェックし、基準を満たすものだけを許可します。

GROUP BY句とのHAVING句

HAVING句はしばしばGROUP BYと組み合わせて使われます。GROUP BYはデータをグループ化し、HAVING句はこれらのグループを条件に基づいてフィルタリングします。

もう一つの例を見てみましょう:

SELECT product_category, COUNT(*) as product_count
FROM products
GROUP BY product_category
HAVING COUNT(*) > 10
ORDER BY product_count DESC;

以下のことが起こります:

  1. 我们は商品をカテゴリごとにグループ化しています。
  2. 各カテゴリの製品数を数えています。
  3. HAVING句は、10以上の製品があるカテゴリだけを通過させます。
  4. 最後に、製品数降順で結果を並べ替えます。

これは、クローゼットを整理するのと似ていますが、10アイテム以上のセクションだけを残し、アイテム数降順に並べ替えます。

ORDER BY句とのHAVING句

前の例で見たように、HAVING句はORDER BYとも很好地組み合わされます。もう一つの例を見てみましょう:

SELECT customer_id, SUM(order_total) as total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(order_total) > 1000
ORDER BY total_spent DESC;

このクエリはVIP顧客を見つけるのに似ています:

  1. 注文を顧客ごとにグループ化します。
  2. 各顧客の支出合計を計算します。
  3. HAVING句は、1,000ドル以上支出した顧客だけをフィルタリングします。
  4. そして、支出が多い順にVIP顧客を並べ替えます。

COUNT()関数とのHAVING句

COUNT()関数はHAVING句の忠実な相棒です。以下に例を見てみましょう:

SELECT author, COUNT(book_id) as book_count
FROM books
GROUP BY author
HAVING COUNT(book_id) >= 5
ORDER BY book_count DESC;

このクエリは、多産な著者を見つけるためのものです:

  1. 本を著者ごとにグループ化します。
  2. 各著者の本の数を数えます。
  3. HAVING句は、5冊以上の本を書いた著者だけを残します。 4.そして、最も多産な著者から順に結果を並べ替えます。

AVG()関数とのHAVING句

AVG()もHAVING句の素晴らしい友達です。以下にその動作を見てみましょう:

SELECT department, AVG(performance_score) as avg_score
FROM employee_performance
GROUP BY department
HAVING AVG(performance_score) > 8.5
ORDER BY avg_score DESC;

このクエリは、スターのパフォーマンスを持つ部署を見つけるためのものです:

  1. パフォーマンススコアを部署ごとにグループ化します。
  2. 各部署の平均スコアを計算します。
  3. HAVING句は、平均スコアが8.5以上の部署だけを残します。
  4. そして、最も高いパフォーマンスを持つ部署から順に結果を並べ替えます。

MAX()関数とのHAVING句

最後に、MAX()とHAVING句の動作を見てみましょう:

SELECT product_category, MAX(price) as highest_price
FROM products
GROUP BY product_category
HAVING MAX(price) > 1000
ORDER BY highest_price DESC;

このクエリは、高級製品カテゴリを見つけるためのものです:

  1. 製品をカテゴリごとにグループ化します。
  2. 各カテゴリの最高価格を見つけます。
  3. HAVING句は、1,000ドル以上の価格がある製品を持つカテゴリだけを残します。
  4. そして、最も高い価格を持つカテゴリから順に結果を並べ替えます。

そして、皆さん!HAVING句とその最好的友達について学びました。練習は完璧を生みますので、これらのクエリを試してみてください。すぐにプロのように複雑なSQLクエリを書けるようになるでしょう!

以下に、私たちがカバーした方法の簡単な参照表を示します:

メソッド 説明
HAVING グループ化された結果をフィルタリング HAVING AVG(salary) > 50000
GROUP BY 類似する値を持つ行をグループ化 GROUP BY department
ORDER BY 結果セットを並べ替え ORDER BY total_spent DESC
COUNT() 行の数を数える HAVING COUNT(book_id) >= 5
AVG() 値の平均を計算 HAVING AVG(performance_score) > 8.5
MAX() 値の最大値を返す HAVING MAX(price) > 1000

快適なクエリを楽しんで、データは常にクリーンで、クエリは効率的にしてください!

Credits: Image by storyset