めっちゃええ話。これはすごく意味がある。細かいツッコミをすれば、上記はSQLを簡単に投げられるようになった話でありSQLを駆使できるようになったわけではないのだけど、そのうち覚えるやろ。
弊社では商品企画を担当する社員がおりまして、ExcelでVLOOKUPはできるけどデータベースの操作はしたことがない、というレベルです。僕が隣でSQLを書いているのを見て、「これなら出来そうだから教えて」と言われたので、教えました。2時間の講習でここまで覚えてくれました。
- データベースとテーブルの関係
- SELECT,FROM,WHERE,LIKE,ORDER BY
- JOIN,GROUP BY,CASE-WHEN
- 簡単なDB関数
なので、「エプロンという品名の商材を抽出して、伝票日付が4月と5月の売上の2013年以降の年度別の対比が見たい」というSQLが書けるようになりました。具体的にはこんな感じです。
select year(e.billdate) as yearly, sum(case when month(e.billdate) = 4 then ed.ordernum else 0 end) as 4月, sum(case when month(e.billdate) = 5 then ed.ordernum else 0 end) as 5月 from earning_details as ed join items as i on i.id = ed.item_id join earnings as e on e.id = ed.earning_id where e.billdate >= 2013 and i.name like '%エプロン%' group by yearly
微妙に構文が違ったりすることはあるんですが、その辺はどうとでもなります。やってる内容がわかれば。
以下、説明に使ったナイストーク集です。
データベース is 何
Excelで例えました。データベースはブック、テーブルはシート。シートに名前があるように、テーブルにも名前がある。また、シートに作れるのは一覧表だけ。一番上の行にカラムの名前を決める。商品というシートならそこに品番、品名、売値などがあって、それと同じという話をした。3分で理解できました。
JOIN is 何
JOINは別テーブルにある同じカラムで参照することで表を連結することでーすと説明しました。売上明細には品番はないけど、商品IDというカラムがあります。売上明細の商品IDカラムは商品テーブルのIDと同じものですので、商品IDでくっつけると横になが〜い表ができるでしょという話をしました。3分で理解できました。
こまけぇこたぁいいんだ。SQLは集合指向であることさえ伝われば。
改めて思ったのは、SQLはSELECTが9割ってことでした。おしまい。
2020.01.06 追記
SQLを学習できるWebサービス作っちゃいました。
www.start-sql.net