集約関数とGROUP BYを使って、合計、平均、グループごとの統計を計算しましょう。
このレッスンを Kodokon で開く集約関数は複数の行を入力として受け取り、単一の値を返します。合計、平均、最小値などです。最もシンプルなのはCOUNT(*)で、行を数えます。これはWHEREと自然に組み合わさります。データベースはまずフィルタリングし、それから数えます。
SELECT COUNT(*) FROM books;
SELECT COUNT(*) FROM books WHERE genre = 'sf';他の必須の集約は列に適用されます。SUM(price)は合計し、AVG(price)は平均を計算し、MIN(year)とMAX(year)は最小値と最大値を見つけます。ASキーワードはエイリアス、つまり計算された列の読みやすい名前を与えます。
SELECT SUM(price) AS total FROM books;
SELECT AVG(price) AS avg_sf
FROM books
WHERE genre = 'sf';
SELECT MIN(year), MAX(year) FROM books;では、カテゴリごとに統計を得るには? それがGROUP BYの役割です。データベースは同じ値(ここではジャンル)を共有する行をグループ化し、それから各グループに集約を適用します。結果にはグループごとに1行が含まれます。
SELECT genre, COUNT(*) AS nb
FROM books
GROUP BY genre;
SELECT genre, AVG(price) AS avg_price
FROM books
GROUP BY genre;