01 / 04
日付は文字で入っている
ordered_on には 2026-05-06 のような文字が入っているよ。年・月・日がこの順に並んでいるから、そのまま ORDER BY すれば時系列に並ぶ。
でも「月ごとにまとめる」には、文字から月の部分だけを取り出す必要があるんだ。
実データで分析する
INPUT · スライド
01 / 04
ordered_on には 2026-05-06 のような文字が入っているよ。年・月・日がこの順に並んでいるから、そのまま ORDER BY すれば時系列に並ぶ。
でも「月ごとにまとめる」には、文字から月の部分だけを取り出す必要があるんだ。
02 / 04
strftime は日付から好きな部分を取り出す関数だよ。%Y が年、%m が月。
strftime('%Y-%m', ordered_on) と書くと、2026-05-06 から 2026-05 が返ってくる。
SELECT ordered_on, strftime('%Y-%m', ordered_on) AS 月 FROM orders ORDER BY id LIMIT 3;実行結果
2026-05-06 | 2026-05 2026-05-11 | 2026-05 2026-05-18 | 2026-05
03 / 04
AS で名前を付けておけば、その名前を GROUP BY と ORDER BY でそのまま使い回せるよ。
時系列は月の順に並べるのが基本。件数の多い順に並べてしまうと、増えたのか減ったのかが読めなくなるんだ。
SELECT strftime('%Y-%m', ordered_on) AS 月, COUNT(*) AS 件数 FROM orders GROUP BY 月 ORDER BY 月;実行結果
2026-05 | 5 2026-06 | 6 2026-07 | 4
04 / 04
1か月ぶんの数字だけでは「多い」「少ない」が言えない。となりの月と比べてはじめて、増えた・減ったが分かるんだ。
件数・個数・金額は別々に動く。「件数は減ったのに金額は増えた」みたいなことが起きるから、3つ並べて見よう。ここから書いてみよう。