SQL入門:ORDER BYとGROUP BYの違いをマスターしよう

この記事は約3分で読めます。
記事内に広告が含まれています。

SQLでデータを扱う際、ORDER BYGROUP BYは、データを整理するために頻繁に利用される重要なキーワードです。しかし、この2つは似ているようで、実は異なる働きをします。今回は、この2つの違いについて詳しく解説していきます。

ORDER BY:データを並び替える

ORDER BYは、取得したデータを特定のカラムに基づいて昇順または降順に並び替えるための句です。

ORDER BY の基本的な書き方

SELECT カラム名1, カラム名2, ...
FROM テーブル名
ORDER BY カラム名 ASC;
  • ASC: 昇順 (小さい順)
  • DESC: 降順 (大きい順)

ORDER BY の使用例

SELECT name, age FROM customers ORDER BY age DESC;

この例では、customersテーブルから名前と年齢を取り出し、年齢の降順で並び替えます。

GROUP BY:データをグループ化する

GROUP BYは、特定のカラムの値が同じデータをグループ化するための句です。集計関数(COUNT、SUM、AVGなど)と組み合わせて使うことが多いです。

GROUP BY の基本的な書き方

SELECT カラム名1, 集計関数(カラム名2), ...
FROM テーブル名
GROUP BY カラム名1;

GROUP BY の使用例

SELECT department, COUNT(*) FROM employees GROUP BY department;

この例では、employeesテーブルから部署名と、各部署の社員数を集計します。

ORDER BYとGROUP BYの違い

機能ORDER BYGROUP BY
目的データを並び替えるデータをグループ化する
対象全ての行特定のカラムの値が同じ行
組み合わせGROUP BYの後でORDER BYを使う単独でも使用可能
集計関数との関係直接の関係はない集計関数と組み合わせて使うことが多い

よくある間違いと注意点

  • GROUP BYの前にORDER BYを記述できない
    GROUP BYでグループ化した後に、ORDER BYで並び替える必要があります。
  • GROUP BYで指定したカラムは、SELECT句でも指定する必要がある
    GROUP BYでグループ化したカラムは、必ずSELECT句でも指定する必要があります。
  • 集計関数を使う場合、
    GROUP BYでグループ化したカラム以外のカラムは、集計関数の中に入れるか、GROUP BY句に含める必要があります。

まとめ

ORDER BYとGROUP BYは、どちらもデータを整理する上で重要な役割を果たしますが、その働きは異なります。ORDER BYはデータを並び替えるのに対し、GROUP BYはデータをグループ化します。それぞれの違いを理解し、適切に使い分けることで、より複雑なSQLクエリを記述できるようになります。

練習問題

  1. 「products」という商品テーブルがあり、”product_name”(商品名)、”category”(カテゴリー)、”price”(価格)というカラムがあるとします。
    • 価格の安い順に商品名と価格を表示してください。
    • カテゴリーごとに商品数を表示してください。
    • 各カテゴリーの平均価格を高い順に表示してください。

コメント

タイトルとURLをコピーしました