クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

グループごとに数えて合計する

このレッスンのあとで: SQLを使って、グループごとに行を数えたり合計したりできる。

45分のレッスンコマンドなし

店長会議の前の日

あなたは、コンビニチェーン「ひだまりマート」の本部で働いています。大阪市内の4店舗を担当しています。

明日は店長会議です。エリアマネージャーから「店舗ごとの3日間の売上を出してください」と頼まれました。

電卓で足すこともできます。でも、店舗が100あったらどうでしょう。データベースに、グループごとの合計を出してもらいましょう。

このレッスンのゴール

メモ

SQLを使って、グループごとに行を数えたり合計したりできる。

キーワード

ことばいみれい
ORDER BY行を、ある列の順に並べます。ORDER BY amount DESC
COUNT行の数を数えます。COUNT(*)
SUM列の値を足し合わせます。SUM(amount)
集計多くの行を1つの数にまとめることです。
GROUP BY同じ値の行を1つのグループにします。GROUP BY store

学生が入力するセルは、このプレビューでは空白です。

ORDER BYで並べかえる

何も指定しないと、行は保存された順に出てきます。

ORDER BY を付けると、指定した列の順に並びます。大きい順は DESC、小さい順は ASC です。何も書かなければ小さい順です。

LIMIT は、出す行の数を決めます。並べてから切ると「上位3件」が取り出せます。

試そう: 売上の大きい順

コード: sql
-- 売上(amount)の大きい順に並べます。DESC は大きい順です。
SELECT store, day, amount FROM daily_sales ORDER BY amount DESC;

-- LIMIT 3 で、上から3行だけにします。
SELECT store, day, amount FROM daily_sales ORDER BY amount DESC LIMIT 3;

-- DESC を ASC に変えて、売上の小さい順を見てください。

COUNTは数え、SUMは足す

COUNT(*) は、行の数を数えます。SUM(amount) は、amount の値を全部足します。

どちらも、たくさんの行を1つの数にまとめます。これを集計といいます。

WHERE と組み合わせると、ある店舗だけの合計も出せます。

試そう: 数えて足す

コード: sql
-- 行の数を数えます。
SELECT COUNT(*) FROM daily_sales;

-- 売上を全部足します。
SELECT SUM(amount) FROM daily_sales;

-- 梅田店だけの合計です。
SELECT SUM(amount) FROM daily_sales WHERE store = '梅田店';

よくある間違い

注意

COUNT(amount) で売上の合計が出ると思う人がいます。そうではありません。COUNT は、金額がいくらでも1行を1と数えます。金額を足したいときは SUM、件数を知りたいときは COUNT を使います。

GROUP BYで店舗ごとにまとめる

全体の合計ではなく、店舗ごとの合計がほしいときは GROUP BY を使います。

GROUP BY store と書くと、同じ店舗の行が1つのグループになります。SUM や COUNT は、グループごとに計算されます。

AS を使うと、結果の列に分かりやすい名前を付けられます。

例: 店舗ごとの合計

店舗足すもの日数合計(円)
梅田店352,000 + 365,000 + 340,00031,057,000
難波店298,000 + 301,000 + 315,0003914,000
天王寺店210,000 + 198,000 + 205,0003613,000
京橋店150,0001150,000

学生が入力するセルは、このプレビューでは空白です。

試そう: 店舗ごとの集計

コード: sql
-- 店舗ごとに、日数と売上の合計を出します。
SELECT store, COUNT(*) AS days, SUM(amount) AS total
FROM daily_sales
GROUP BY store
ORDER BY total DESC;

-- GROUP BY store を GROUP BY day に変えて、日ごとの合計を見てください。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。