SQL問題 性別が正しい値ではないレコードはどれか

問題:nyumon2_ customer2で性別が正しい値ではないレコードはどれか

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

1件だけではない。正しくない数値とnullは別。

解答: id=7とid=8

解説:「正しくない」から「正しい値ではない」と考えてsex NOT IN (1,2)とするとsex=3になっているid=7だけが出てくる。これはNULLが〇〇ではないでは拾えないためで、別にsex IS NULLを追加する必要がある。

SELECT *
FROM `nyumon2_customer2`
WHERE sex NOT IN (1,2) OR sex IS NULL

「正しい値」を取りたい場合はsex IN (1,2)でよく、正しくない場合を見たいのにうまく拾えない場合はNULLの扱いにも注意する。

集計したところ本来の数と合計がずれる、では何がどうずれているのか原因を調べるためには「正しくない値」を持っているレコードを探して対応を考えなければならない。そして誰かが整理していない限り「正しい値」だけになっていることはまずないので「正しい値」の取り方だけでなく「正しくない値」の取り方も身に着けておきたい。

SQL問題一覧はこちら

2020年1月18日SQL問題

Posted by shinu