SQLのお勉強 10.集約関数
2020-09-18
こんにちは、0371です。
今回は、SQLのお勉強をしたいと思います。
基本情報技術者試験で出題される範囲を中心に進めます。
お勉強
※ PostgreSQLはインストール済みかつ、パスも通しているという前提で進めていきます。
分からないという方は、以下の記事から始めてください。
dockerを使って、再構築が容易なSQLの練習場を作成する
"https://0371.blog/docker-sql"
前回の記事はこちら
SQLのお勉強 9.論理演算子
"https://0371.blog/sql-9"
集約関数
集約関数を使用することで、合計値や平均値などの集計操作をすることができます。
集約関数は、select
、having
、order by
の三つでしか書くことができません。
使用できる集約関数は以下の通りです。
count // テーブルのレコード数を数える
sum // テーブルの数値列のデータの合計を求める
avg // テーブルの数値列のデータの平均を求める
max // テーブルにある任意の列のデータの最大値を求める
min // テーブルにある任意の列のデータの最大値を求める
count
のみ、引数に*
を指定することができます。
count
を使用した例は以下の通りです。
select count(*), count(shohin_tanka) from Shohin;
*
はnull
を含めて数えますが、列名を指定すると、null
を含めずに数えます。
count | count
-------+-------
8 | 6
(1 row)
sum
を使用した例は以下の通りです。
select sum(hanbai_tanka), sum(shiire_tanka) from Shohin;
sum関数では、null
を除外して計算します。
sum | sum
-------+-------
16780 | 12210
(1 row)
avg
を使用した例は以下の通りです。
select avg(hanbai_tanka), avg(shiire_tanka) from Shohin;
null
は分子からも分母からも除外されて計算されます。
avg | avg
-----------------------+-----------------------
2097.5000000000000000 | 2035.0000000000000000
(1 row)
min
, max
を使用した例は以下の通りです。
select min(hanbai_tanka), max(shiire_tanka), min(torokubi), max(torokubi), min(shohin_mei), max(shohin_mei) from Shohin;
min
, max
は、数値のみではなく、日付や文字列に対しても有効です。
文字列の場合は、辞書型の最大値・最小値が取得されます。
ほぼ全てのデータ型に適応することが可能です。
min | max | min | max | min | max
-----+------+------------+------------+---------+--------------
100 | 5000 | 2008-04-28 | 2009-11-11 | Tシャツ | 穴あけパンチ
(1 row)
重複値を除外して集約するには、distinct
を使用します。
全ての集約関数に適応させることができます。
select count(distinct shohin_bunrui) from Shohin;
「衣服」、「事務用品」、「キッチン用品」の三種類なので、count
は3になります。
count
-------
3
(1 row)
今日はここまで。
参考書籍
SQL 第2版 ゼロからはじめるデータベース操作
"https://amzn.to/2QYMBJD"
今日の一言
集約関数が分かったのでSQL
はマスターしたも同然!!!!
次回の記事はこちら
SQLのお勉強 11.group by
"https://0371.blog/sql-11"