コマンド道場
WHERE 句難易度 ★★☆☆☆

入社日で絞り込む

shain テーブルから、2020-04-01 以降に入社した社員を取り出してください。列は「name, hired_on」の順、入社日の古い順に並べてください。同じ日ならば shain_id の小さい順とします。

主要 7 製品で通用 そのまま使える: PostgreSQL / MySQL / MariaDB / SQLite / SQL Server / Oracle Database / IBM Db2

製品ごとの対応表(実測)を見る

  • 日付は文字列と同じように比較できます。新しい日付ほど大きい値として扱われます。
  • 「以降」は >= です。> と書くとその日ちょうどに入社した人(このデータでは中村)が落ちます。
● 起動中…

この問題で使えるテーブル(名前をタップすると入力できます)

7

NULL
🔑int不可
text不可
int
データを見る(先頭 5 行)
busho_idbusho_nameparent_busho_id
1経営NULL
2開発1
3営業1
4管理1
5基盤2

18

NULL
🔑int不可
text不可
int
int
numeric(10,0)不可
date不可
date
データを見る(先頭 5 行)
shain_idnamebusho_idjoushi_idsalaryhired_ontaishoku_on
1鈴木1NULL9800002014-04-01NULL
2佐藤217200002016-10-01NULL
3田中225200002019-04-01NULL
4中村225300002020-04-01NULL
5小林224450502024-04-01NULL

解説

結論

日付も比較演算子で絞り込めます。「以降」は境界を含むので >= です。

なぜ

日付型は内部で順序を持つため、数値と同じように < > <= >= で比べられます。'2020-04-01' のような文字列は、比較する相手が日付列であれば日付として解釈されます。

このデータには 2020-04-01 ちょうどに入社した社員(中村)がいます。>= と > で結果が 1 行変わるので、境界を含むかどうかを設問から必ず読み取ってください。「以降」「以上」は含む、「より後」「より大きい」は含みません。

よくある間違い

①> と >= を取り違えて境界の行を落とす ②不等号の向きを逆にする。

WHERE 句 の使い方をはじめから読む

根拠(一次情報)