SQL問題 削除されていない名前が「藤」で終わるレコード数はいくつか

問題:nyumon2_ customer2で1・名前が「藤」で終わるかどうか、2・削除されているかどうかの4パターンそれぞれについてレコード数を集計すること。また、削除されていない名前が「藤」で終わるレコード数はいくつか

利用テーブルはnyumon2_customer2 。 使い方はSQL学習用サンプルデータを参照。

・is_deletedは「削除されているか」なのでTrueが「削除されている」になる
・名前が「藤」で終わるかの区分は1つ別に作ってGROUP BYする
・ 削除されていない名前が「藤」で終わるレコード数は3ではない
・レコード数が合わないということはどこかで抜け漏れが発生しているということ。「藤」で終わらない原因は何かを調べる

解答:
名前が「藤」で終わる・ 削除されていない:4
名前が「藤」で終わらない・ 削除されていない:6
名前が「藤」で終わる・ 削除されている:2
名前が「藤」で終わらない・ 削除されている :0


解説:「藤で終わる」は like '%藤’ で正しいのだが、後ろに半角や全角のスペースが入っているときちんと拾えない。今回のテーブルは半角スペースだけなのでTRIMで消せるが、全角もあるならばREPLACEなどを使って消すステップも必要になる。

なお「藤で終わる」カラム名はflag_fujiとしているがこれは各自でつけて良い。集計結果には影響ない。ただしわかりづらいと他の人が読むときに困ったりいちいち質問されるのでわかりやすくしておいた方がいい。

SELECT
is_deleted
, CASE WHEN TRIM(name) LIKE '%藤’ THEN 1 ELSE 0 END as flag_fuji
, COUNT(id)
FROM `nyumon2_customer2`
GROUP BY is_deleted,flag_fuji

SQL問題一覧はこちら

2020年1月14日SQL問題

Posted by shinu