SQLでデータを扱う際、ORDER BYとGROUP 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 BY | GROUP 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クエリを記述できるようになります。
練習問題
- 「products」という商品テーブルがあり、”product_name”(商品名)、”category”(カテゴリー)、”price”(価格)というカラムがあるとします。
- 価格の安い順に商品名と価格を表示してください。
- カテゴリーごとに商品数を表示してください。
- 各カテゴリーの平均価格を高い順に表示してください。
コメント