朝活のブログ

朝活のアウトプットを投稿します。

集計関数、グループ化【SQL】

f:id:morning-output:20201010084519j:plain

 DISTINCT

SELECT DISTINCT(カラム名)
FROM morning;

DISTINCT(カラム名)」と記述すると、指定したカラムの重複するデータを除くことができます。

四則演算

SELECT category, price * 1.08
FROM morning;

四則演算をSELECTで取得するカラムに使用すると、計算後のデータが取得できます。

▼四則演算の振り返り

足す(+)、引く(-)、かける(*)、割る(/)。

SUM関数

SELECT SUM(price)
FROM morning;

SUM(カラム名)」と記述すると、指定したカラムに保存されたデータの合計を計算することができます。

SELECT SUM(price)
FROM morning
WHERE morning_at = "2020-10-01";

WHEREと併用することで、指定した条件の合計を求めることができます。

AVG関数

SELECT AVG(price)
FROM morning;

AVG(カラム名)」と記述すると、指定したカラムに保存されたデータの平均を計算することができます。

SELECT AVG(price)
FROM morning
WHERE morning_at = "2020-10-01";

WHEREと併用することで、指定した条件の平均を求めることができます。

COUNT関数

SELECT COUNT(price)
FROM morning;

COUNT(カラム名)」と記述すると、指定したカラムのデータの数を計算することができます。「null」になっているデータは計算されません。

SELECT COUNT(*)
FROM morning;

 「*」を用いると、レコード数を計算することができます。「null」になっているデータも計算されます。

SELECT COUNT(*)
FROM morning
WHERE morning_at = "2020-10-01";

WHEREと併用することで、指定した条件のデータ数を求めることができます。

MAX・MIN関数

SELECT MAX(price)
FROM morning;

MAX(カラム名)」で最大のデータ、「MIN(カラム名)」で最小のデータを取得することができます。

SELECT MIN(price)
FROM morning
WHERE morning_at = "2020-10-01";

WHEREと併用することで、指定した条件の最大・最小のデータを求めることができます。

GROUP BY

SELECT SUM(price), morning_at
FROM morning
GROUP BY morning_at;

GROUP BY カラム名」を用いると、集計関数により、各グループごとにデータが集計されます。SERECTには、と集計関数GROUP BYに指定しているカラム名のみ使用できます。

SELECT SUM(price), morning_at, category
FROM morning
GROUP BY morning_at, category;

グループ化は複数のカラムに行うことができます。

SELECT 集計関数
FROM テーブル名
WHERE 条件
GROUP BY カラム名;

記述の順序は上記の通りです。

実行は「検索(WHERE)」→「グループ化(GROUP BY)」→「集計(集計関数)」の順で行われます。

HAVING

GROUP BY カラム名
HAVING 条件;

HAVING 条件」を用いると、GROUP BYでグループ化したデータを更に絞り込むことができます。

SELECT SUM(price), morning_at
FROM morning
GROUP BY morning_at
HAVING SUM(price) > 500;

グループ化された後に実行されるので、グループ化されたテーブルのカラムを使用します。