「AP過去問 令和6年度春期 午前 問26」の版間の差分

提供:yonewiki
144行目: 144行目:
</table>
</table>
<script></yjavascript>
<script></yjavascript>
 この問題のSQLはどうやら発注点により複数の倉庫にある在庫の総数が少ない場合には発注が必要だと判定したいのだなと意図のわかりやすい問題のSQLになっているようです。この意図に気付けない場合は問題を解くのに迷宮入りしてしまいます。
 CASE WHEN ~ THEN 句はSELECTで表示したい行についての処理にIF文のようなものを適用しようとする動きになります。
 
 


[[AP過去問 令和6年度春期 午前 問25]]前の問題へ
[[AP過去問 令和6年度春期 午前 問25]]前の問題へ

2025年1月30日 (木) 23:50時点における版

AP過去問 令和6年度春期 午前 問題に戻る

AP過去問 令和6年度春期 午前 問25前の問題へ

AP過去問 令和6年度春期 午前 問27次の問題へ

 

問26(問題文)

 "部品"表及び"在庫"表に対し、SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。


部品
部品 発注点
P01 100
P02 150
P03 100
在庫
部品ID 倉庫ID 在庫数
P01 W01 90
P01 W02 90
P02 W01 150
[結果]
部品ID 発注要否
P01 不要
P02 不要
P03 必要


〔SQL文〕

SELECT 部品.部品ID AS 部品ID、

  CASE WHEN 部品.発注点 >

    THEN N'必要' ELSE N'不要' END AS 発注要否

FROM 部品 LEFT OUTER JOIN 在庫

  ON 部品.部品ID = 在庫.部品ID

GROUP BY 部品.部品ID、部品.発注点


ア COALESCE(MIN(在庫.在庫数)、0)

イ COALESCE(MIN(在庫.在庫数)、NULL)

ウ COALESCE(SUM(在庫.在庫数)、0)

エ COALESCE(SUM(在庫.在庫数)、NULL)

 

回答・解説

SELECT * FROM 部品 LEFT OUTER JOIN 在庫

ON 部品.部品ID = 在庫.部品ID


のSQL実行結果は以下のようになります。外部結合しますが、結合先がない部品P03も外部結合によってNULL値として取り込まれます。


部品ID発注点部品ID(在庫)倉庫ID在庫数
P01100P01W0190
P01100P01W0290
P02150P02W01150
P03100NULLNULLNULL


 この問題のSQLはどうやら発注点により複数の倉庫にある在庫の総数が少ない場合には発注が必要だと判定したいのだなと意図のわかりやすい問題のSQLになっているようです。この意図に気付けない場合は問題を解くのに迷宮入りしてしまいます。


 CASE WHEN ~ THEN 句はSELECTで表示したい行についての処理にIF文のようなものを適用しようとする動きになります。

 

AP過去問 令和6年度春期 午前 問25前の問題へ

AP過去問 令和6年度春期 午前 問27次の問題へ

AP過去問 令和6年度春期 午前 問題に戻る