このレッスンではSQLのグルーピングについて説明します。
グルーピングといったら少しイメージがつかないかもしれません。
グルーピングとは特定のカラムをもとに集計することができます。
例えば、商品名ごとの合計、平均、最小値、最大値などをすることです。
SQLでのグルーピングは、 GROUP BYを使います。
GROUP BYもORDER BYもWHEREなどと同様に、SELECT文に付けることで、グルーピングすることが可能です。
また、ORDER BYもWHEREと組み合わせて使うこともできます。
PythonのライブラリPandas入門講座をみていただいている方はピンときたかもしれません。
PandasでのグルーピングもGROUP BYメソッドという同じ名前のものを使います。
データ加工が得意のPythonのPandasを学習したことのない方はぜひ、そちらも学んでみてください。
▼目次
00:00 はじめに
01:34 GROUP BYの構文やきまりについて
02:38 GROUP BYとSUM関数
03:42 GROUP BYとORDER BY
04:15 GROUP BYとAVG,MIN,MAX関数
04:51 GROUP BYとCOUNT関数
05:18 GROUP BYでテーブル全件のデータ数をカウント
05:37 おわりに
▼関連動画
【SQL超入門講座】01.コース紹介 ~ SQLとは? ~ 環境構築|初心者向け
【SQL超入門講座】02.データベースのテーブルとは?
【SQL超入門講座】03.SELECT文|SQLの基本中の基本
【SQL超入門講座】04.WHERE|特定の条件でデータを抽出する方法
【SQL超入門講座】05.ORDER BY|データの並び替え
Pythonの便利ライブラリ「Pandas入門講座」合併版|Pandasの基本的なこと3時間で学べます【Python超入門コースの次におすすめの入門講座】
Pandas入門講座|09.データ集計(groupby)の方法【PythonのライブラリPandas】
▼書き起こし
まず最初に、GROUP BYについて説明します。
GROUP BYとは、データをルールにしたがってグルーピングするものです。
SELECTにGROUP BYを付けることで、グルーピングしたいカラムをもとに、集約関数を使って合計や平均、最小値や最大値、カウントなどができるようになります。
具体的に言うと、商品名ごとの売上金額の合計や平均などを計算することができます。
また、GROUP BYは、ORDER BYと組み合わせて、売上金額の合計順に並べたりといったことができます。
“`SQL
SELECT グルーピングをするカラム,集計関数
FROM テーブル名
WHERE 条件式
GROUP BY グルーピングをするカラム
ORDER BY ソート条件
“`
GROUP BYの構文はこちらです。
GROUP BYはWHEREとORDER BYの間に書きます。
GROUP BYのところには、グルーピングをしたいカラムを記述します。
SELECTには、グルーピングをしたいカラム,集計関数を記述します。
集計関数とは、合計やカウント、最大値、最小値などを求めることができる関数です。
集計関数のことは、集約関数といったりもします。
これだけだとわかりにくいので、SQLを書いてみていきましょう。
“`SQL
SELECT 商品分類, sum(売上金額)
FROM test_table
GROUP BY 商品分類
“`
それでは、GROUP BYを使って商品分類ごとの売上金額の合計を計算してみましょう。
商品分類ごとにグルーピングするので、GROUP BYの後ろの商品分類をかきます。
また、SELECTのあとに商品分類を書きましょう。
次に集計関数をかきます。
ExcelやPythonなどと同じくSQLでも合計は集計関数のSUMで求めることができます。
SUMの丸括弧の中に集計対象である売上金額を記述しましょう。
なのでこのSQLは日本語に直すと「テーブルのtest_tableから商品分類ごとに売上金額を合計したデータを、商品分類と一緒に出力する」という意味になります。
それでは実行します。
取得できました。
“`SQL
SELECT 商品名, sum(売上金額)
FROM test_table
GROUP BY 商品名
“`
次に、商品名ごとの合計をだしてみましょう。
商品分類だったところを商品名に書き換えればオッケーです。
実行します。
商品名ごとに合計を算出できました。
“`SQL
SELECT 商品名, sum(売上金額)
FROM test_table
GROUP BY 商品名
ORDER BY sum(売上金額)
“`
先ほどから出力しているデータですが、このままだと売上金額がソートされていないので少々見辛くなってしまっています。
GROUP BYとORDER BYを併用することで、この問題を解決しましょう。
ORDER BYのあとに、集計している記述を書きましょう。
それでは実行します。
売上金額を昇順に並び替えることができました。
このように、GROUP BYとORDER BYを組み合わせて使いたい場合は、集計関数まで含めたカラムをORDER BYに指定しましょう。
(続く)
▼書き起こしブログ
(準備中)
▼自己紹介
ブログに自己紹介を書いております。
▼SNS
Twitter : https://twitter.com/kino_code/likes
Facebook : https://www.facebook.com/%E3%82%AD%E3…
Website : https://kino-code.com/
#SQL #データベース #GROUP BY #グルーピング #集約
コメント
今日も勉強になりました。ありがとうございます。sqlもっと使いこなしたいです。いつかaccessなしでデータベースを操作してみたいです。
出来ました!ありがとうございます