0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLでデータ集約やグループ化を行なう

Posted at

はじめに

SQL学習のために備忘録として、残しております

データを集約する

関数を用いてSELECT文で取り出したレコードの結果をまとめる

集約関数

SQLでも計算を行う為の集約関数が用意されている
計算を行う事で、SELECT文で取り出した結果をまとめることができる

関数名 説明
AVG カラムがNULLでないレコード数を計算する
カラム名に「*」を指定すると、NULL値を含めてテーブルの全レコードを計算する
COUNT(DISTINCT カラム名)で重複値を排除したレコードを計算する
MAX カラムの最大値を計算する
MIN カラムの最小値を計算する
SUM カラムの合計値を計算する

集約関数ではレコードのグループ単位で計算を行い、1つの結果を返す

SELECT SUM(計算したいカラム名) FROM 対象のテーブル名;

抽出データをグループ化

一つのテーブル内にあるレコードを複数のグループごとに分割する事をグループ化という

SELECT 取得したいカラム数 FROM 対象とするテーブル名 (WHERE 取得したいカラムの条件) GROUP BY グループ化したいカラム名;

グループ化した結果に条件を指定して絞り込む

WHERE句は条件を与えて抽出するレコードを絞り込めるが、グループ化したグループに対して条件を設定できない。
そこでグループ化されて抽出されたレコードに対して条件を設定して絞り込むには、HAVING句を使用する

SELECT 取得したいカラム FROM 対象とするテーブル (WHERE 取得したいレコードの条件) GROUP BY グループ化したいカラム名 HAVING 取得したいグループの条件;

HAVING句には、取得したいグループの条件として、集約関数を条件に含めることができる

※重要
WHERE句とHAVING句は性質が似ているため混同されがちである
ここで抑えておきたいポイントは、WHERE句はSELECT句に対する絞り込み条件を設定する際に使われ、HAVING句はGROUP BY句に対する絞り込み条件を設定する際に使われる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?