SQLのお勉強 11.group by
2020-09-19
こんにちは、0371です。
今回は、SQLのお勉強をしたいと思います。
基本情報技術者試験で出題される範囲を中心に進めます。
お勉強
※ PostgreSQLはインストール済みかつ、パスも通しているという前提で進めていきます。
分からないという方は、以下の記事から始めてください。
dockerを使って、再構築が容易なSQLの練習場を作成する
"https://0371.blog/docker-sql"
前回の記事はこちら
SQLのお勉強 10.集約関数
"https://0371.blog/sql-10"
group by
集約関数とgroup by
を使用することで、テーブルを「商品分類ごと」や「登録日ごと」に切り分けて集約することができます。
group by
は、from
やwhere
の後ろに記述してください。
以下のように使用します。
select 列名1, 列名2, 列名3 from テーブル名 group by 列名1, 列名2, 列名3;
下に例を挙げます。
select shohin_bunrui, count(*) from Shohin group by shohin_bunrui;
商品分類ごとに、count(*)
が適応されます。
shohin_bunrui | count
---------------+-------
キッチン用品 | 4
衣服 | 2
事務用品 | 2
(3 rows)
group by
にnull
が入っていた場合は、null
も一つのグループとして取得します。
select shiire_tanka, count(*) from Shohin group by shiire_tanka;
shiire_tanka | count
--------------+-------
| 2
320 | 1
500 | 1
2800 | 2
5000 | 1
790 | 1
(6 rows)
where
と併用した場合はこうなります。
select shiire_tanka, shohin_bunrui, count(*) from Shohin where shohin_bunrui = '衣服' group by shiire_tanka, shohin_bunrui;
where
で「衣服」を抽出した後に、group by
の切り分けが行われます。
shiire_tanka | shohin_bunrui | count
--------------+---------------+-------
500 | 衣服 | 1
2800 | 衣服 | 1
(2 rows)
試験対策的な覚え方になりますが、group by
の中にない列名は、select
で指定できません。
また、select
の中にある列名は、全てgroup by
の中にも記述しなければいけません。
覚えておくと良いでしょう。
また、group by
にはas
でつけた列の別名は使用できません。
PostgreSQL
ではエラーになりませんが、別のDBMS
ではエラーになるので、使わないようにしましょう。
今日はここまで。
参考書籍
SQL 第2版 ゼロからはじめるデータベース操作
"https://amzn.to/2QYMBJD"
今日の一言
group by
が分かったのでSQL
はマスターしたも同然!!!!
次回の記事はこちら
SQLのお勉強 12.having
"https://0371.blog/sql-12"