SQLで学ぶ集計と並べ替えの基本

ミサキ

ナナさん、SQLってよく聞くけど、集計や並べ替えってどういうことなの?

ナナ

いい質問だね、ミサキ!SQLの集計や並べ替えはデータベースを扱う上でとても重要なスキルなんだ。今日はその基本を一緒に学んでいこう!

GROUP BYの基本概念と用法

GROUP BY句は、データを特定のカラムによってグループ化するためのSQLの機能だよ。これを使うことで、同じ値を持つデータをまとめて集計することができるんだ。

例えば、売上データがあるとするよ。このデータを「商品ごと」に集計したいとき、次のようなSQL文を書くことができるよ。

SELECT 商品名, SUM(売上) AS 合計売上
FROM 売上データ
GROUP BY 商品名;

このSQL文では、商品名でデータをグループ化し、その中の売上の合計を計算しているよ。

ORDER BYによる並べ替えの仕組み

次に、ORDER BY句について説明するね。これは、クエリの結果を特定のカラムに基づいて並べ替えるための機能だよ。デフォルトでは昇順(小さい順)に並べ替えられるけど、降順(大きい順)にも変更できるんだ。

例えば、売上の合計を降順で表示したい時は、以下のように書くことができるよ。

SELECT 商品名, SUM(売上) AS 合計売上
FROM 売上データ
GROUP BY 商品名
ORDER BY 合計売上 DESC;

ここでは、合計売上が大きい順に商品を並べ替えているよ。

集計関数(SUM, COUNT, AVGなど)の利用方法

SQLにはいくつかの集計関数があって、データを集計するのにとても便利なんだ。主なものを紹介するね。

例えば、売上データの行数を数えたい場合は、次のように書くことができるよ。

SELECT COUNT(*) AS 行数
FROM 売上データ;

このクエリでは、売上データテーブルの全行数をカウントしているよ。

複数のカラムでのGROUP BYの使い方

複数のカラムでグループ化することも可能なんだ。例えば、商品名とカテゴリでグループ化したい場合は、次のようにするよ。

SELECT カテゴリ, 商品名, SUM(売上) AS 合計売上
FROM 売上データ
GROUP BY カテゴリ, 商品名;

この場合、まずはカテゴリでグループ化し、その中で商品名によってさらにグループ化して、各商品の売上を集計しているんだ。

ORDER BYの昇順・降順の指定方法

ORDER BY句では、昇順と降順を指定できるよ。デフォルトは昇順だけど、降順にしたい場合はDESCを使うんだ。

例えば、商品名をアルファベット順で並べたい場合は、次のように書くよ。

SELECT 商品名
FROM 売上データ
ORDER BY 商品名 ASC;

このとき、ASCを使うことで昇順に並べ替えられるよ。降順にしたい場合は、DESCを使えばいいよ。

サブクエリを用いた集計と並べ替えの応用

サブクエリとは、クエリの中に別のクエリを入れることだよ。これを使うことで、より複雑な集計や並べ替えが可能になるんだ。

例えば、売上の合計が1000を超える商品だけを抽出したい場合、次のように書けるよ。

SELECT 商品名, 合計売上
FROM (
    SELECT 商品名, SUM(売上) AS 合計売上
    FROM 売上データ
    GROUP BY 商品名
) AS 集計結果
WHERE 合計売上 > 1000;

ここでは、内側のクエリで売上を集計し、その結果を外側のクエリでフィルタリングしているんだ。

実際のデータベースを使った演習例

さあ、実際に演習してみよう!次のような売上データがあると仮定するよ。

商品名 カテゴリ 売上
商品A カテゴリ1 500
商品B カテゴリ1 300
商品A カテゴリ2 700
商品C カテゴリ1 900

このデータを使って、各商品ごとの合計売上を求めてみよう。次のSQL文を書いてみてね。

SELECT 商品名, SUM(売上) AS 合計売上
FROM 売上データ
GROUP BY 商品名;

それができたら、各商品の合計売上を降順で表示させるために、ORDER BYを追加してみよう。

SELECT 商品名, SUM(売上) AS 合計売上
FROM 売上データ
GROUP BY 商品名
ORDER BY 合計売上 DESC;

このように、実際のデータを使って練習することで、SQLの集計や並べ替えの技術を身につけることができるね。

まとめ

ミサキ

わあ、SQLの集計や並べ替えが少しわかった気がする!

ナナ

そうだね、ミサキ。集計や並べ替えの基本を理解すれば、データをより有効に活用できるようになるよ。これからも練習してみてね!

← 前の記事 次の記事 →