TIL100. SQLベース(3)


集約関数


COUNT

SELECT COUNT(*) FROM products;
Productsテーブルで、1行の数を数えます.
SELECT COUNT(DISTINCT name) FROM porducts;
重複した名前を除いて、countを数えます.

SUM

SELECT SUM(price) FROM products;

AVG

SELECT AVG(price) FROM products;
これにより平均値が計算されますが、NULL値は含まれません.
SELECT SUM(price)/COUNT(*) FROM products;
NULL値を含め、平均値を計算します.

MIN

SELECT MIN(price) FROM products;

MAX

SELECT MAX(price) FROM products;

すべて出力

SELECT COUNT(price),SUM(price),AVG(price),MIN(price),MAX(price) FROM products;

GROUP BY


グループ統計(SUM、AVGなど)に使用します.
SELECT supplierid,categoryid,AVG(price) FROM products GROUP BY supplierid,categoryid

HAVING


GROUP BYをするときは100を超える価格しか見たくないとき
WHEREフェスティバルを使えばいいですよね?
いけません.
WHEREセクションはGROUP BYの前に動作するので、グループ化の前にフィルタリングを行います!
だからGROUP BYのフィルタリングはHAVINGが担当します!
SELECT supplierid, categoryid, AVG(price) FROM products GROUP BY supplierid,categoryid HAVING AVG(price) >100

CASE

SELECT CASE
	WHEN categoryid=1 THEN '음료'
	WHEN categoryid=2 THEN '조미료' 
	ELSE '기타'
END AS 'categoryName',* 
FROM products
categoryidが1の場合は飲料、2の場合は調味料、残りは他の処理の熱を生成します.