2024年 春期 応用情報技術者 午前 問26

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

[SQL文]
SELECT 部品.部品ID AS 部品ID,
  CASE WHEN 部品.発注点 >   a  
    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)


答え ウ


解説
“部品”表及び“在庫”表に対してSQL文を実行した結果から処理の内容は、“部品”表と“在庫”表の同じ部品IDについて、“部品”表の発注点の個数の総和と“在庫”表の在庫数を比較して発注点が大きいと発注要否が「必要」、どうでない場合は「不要」となっている。
選択肢のSQL文のCOALESCEは指定したカラムがNULLだった場合にNULL値を指定した別の値に置き換える処理であり、この問題では“部品”表の部品ID毎の発注点の総和を計算してそれがNULLだったら0に置き換える処理が適切であるので
 COALESCE(SUM(在庫.在庫数), 0)
(ウ)になる。


キーワード
・SQLのNULL値

キーワードの解説
  • SQLのNULL値
    SQLにおいてNULLは特殊な値であり、“データが存在しない”という意味で、比較を行うとその結果は必ず「偽」(false)になります。
    また、四則演算にNULLがあると結果は「NULL」になります。

もっと、「SQLのNULL値」について調べてみよう。

戻る 一覧へ 次へ