H11午後I 問2
設問1
Commented by はぁはぁ at 2005-01-24 22:40
>gakkoさん
SOL関連の問題での疑問なんですけど、H11午後1問2の設問1の設問文をどうとらえていいかわかりません。
問題文中([人事情報管理業務](1))では
「退職フラグを’1’に変更し、退職年、退職月、退職日を設定」
と書いてあります。しかし、設問文中では、退職フラグを’1’に変更することだけを思わせるような感じで書かれています。
また、僕の解答は[人事情報管理業務](1)から、毎月20日に退職者の更新処理(=設問1でのSQL文)が行われると考えたのでUPDATE 従業員
SET 退職フラグ = '1'
WHERE 生年 = 1939 AND
(生月 = 4 AND 生日 >= 21) AND
(生年 = 5 AND 生日 <= 20)にしました。う~ん。。違うのかなぁ・・・
Commented by gakko at 2005-01-25 00:01
>はぁはぁ さん
退職年,退職月,退職日に満60歳の誕生日の前日を設定しなくて良いのか?と,いうことですよね?
設問では,一括して退職フラグを'1'に更新する処理と書いてあり,退職年月日を設定する処理とは書いていないので,フラグのみの更新でよいかと思います。余談ですが,1日が誕生日の退職者(昔の人は元旦が誕生日という人も多い(w )の前日を設定する。というのを,標準SQLで表現できそうな気がしません。。。できるのかな?>>9 殿
さて,20日〆にかかるのは誕生日が21日の人まで ですので,設問の条件だと,生年月日が1939年4月22日~5月21日の人ということになります。
SQLの方ですが,
UPDATE 従業員
SET 退職フラグ = '1'
WHERE 生年 = 1939 AND
((生月 = 4 AND 生日 >= 22) OR
(生年 = 5 AND 生日 <= 21))かな。と,思います。
>=(<=)を>(<)で表現したり,BETWEENもアリですね。
Commented by gakko at 2005-01-25 00:05
いやぁ~H11午後Ⅰ問2がITEC本に載ってなくてググってました。。。
何のことはない,本棚に眠っている2004予想問題集に載ってた(苦笑ITECの解答例はBETWEEENを使ってありました。
BETWEENだと,4月が何日まであるのかを誤って解答を間違ったら最悪ですよね。。
Commented by はぁはぁ at 2005-01-25 00:37
>gakkoさん
レスありがとうございます。>さて,20日〆にかかるのは誕生日が21日の人まで ですので,設問>の条件だと,生年月日が1939年4月22日~5月21日の人ということ>になります。
見逃してました。処理基準日が20日ってことは、誕生日が21日の人まで考えないといけなかったですね。
細かいところを見逃してしまうので、こういう仕事向いていないのかも。。
あと、僕の解答の
(生月 = 4 AND 生日 >= 21) AND←
(生年 = 5 AND 生日 <= 20)
矢印の部分はORでしたね。間違えた。参考までに、3週間本(通称=糞本)の解答を紹介します。
1.
UPDATE 従業員
SET 退職フラグ = '1'
WHERE 生年 < 1939 OR
(生年 = 1939 AND 生月 < 5) OR
(生年 = 1939 AND 生月 = 5 AND 生日 <= 21)2.
UPDATE 従業員
SET 退職フラグ = '1'
WHERE 生年 * 10000 + 生月 * 100 + 生日 <=19390521なんてのもありました。この本では、毎月20日に処理をしないことになっています。(これでも結果は同じだけど・・・)