投稿する

H29PM1問2設問1について [0667]

 あきさん(No.1) 
SQLの穴埋め問題でaについてご質問です。
こちら回答ではSUM(S.出庫数量)とあるのですが
COALESCE(SUM(S.出庫数量),0)としたら不正解でしょうか?

問題文ではSQL1は各部品の出庫年月日ごとの出庫数量を集計する。またSQL1では出庫が全くない部品も集計対象とするという記載があり、どうするかという記載はありませんでした(見落としていなければですが……)
NULLが正解なのは分かるのですが0となるように回答したら不正解なのかお伺いしたいです。
2024.06.24 22:48
GinSanaさん(No.2) 
DB シルバーマイスター
SUMの外側よりSUMの引数にコアレスを張っておくべきではないですか。
SQL標準の原理では集合関数のNULLの扱いが直感的ではないので、入れたくなってしまうのかもしれません。入れても悪さはしないが、入れずとも(SQL標準としては)平気なことになっているから、あえて模範解答では書かなかったのかもしれません。

SQL99

Chapter 33 -- Searching with Groups
github.com/crate/sql-99/blob/main/docs/chapters/33.rst

Set Functions and the "Ignore NULLs" Policy

Because of the "ignore NULLs" policy, it should be rare for a set function to return NULL. The only cases are: for MIN or MAX or SUM or AVG, if every one of the Column values is NULL, or if the SELECT returns no rows at all, the function returns NULL (・・・). 
「NULL を無視する」ポリシーのため、セット関数が NULL を返すことはまれです。唯一のケースは、MIN、MAX、SUM、AVG の場合、列の値がすべて NULL の場合、または SELECT が行をまったく返さない場合、関数は NULL を返します (・・・)。
2024.06.25 08:29
 あきさん(No.3) 
なるほど、確かに書くなら内側ですね……。
記載することで間違いとはならなさそうで、よかったです。
ご回答ありがとうございます。
2024.06.25 21:15
返信投稿用フォーム

お名前

顔アイコン


本文(コミュニティガイドライン⇱を順守して適切な投稿を心がけましょう)

投稿削除用のパスワード(20文字以内)

投稿プレビュー
※SQL文は全角文字で記載してください。
※宣伝や迷惑行為を防止するため、当サイトとIPAサイト以外のURLを含む文章の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop