【Oracle】SUMの結果(GROUP BY 指定の有り無し)

SQLの集合関数である「SUM」ですが、
該当レコードが無い場合に、GROUP BY 指定の有り無しで結果が変わります

GROUP BY を指定している場合

該当レコード無しとなる

GROUP BY を指定していない場合(省略時)

項目の値が「NULL」の1レコードが結果として返って来る

検証

★「テーブル名:TESTTBL」に
項目「商品コード:SHNCD」【CHAR】、「売上金額:URIKN」【NUMBER】
★レコード無し

GROUP BYを指定している場合

SELECT COUNT(*) FROM (
                      SELECT SUM(URIKN)
                        FROM TESTTBL
                       GROUP BY SHNCD
                     )

COUNT の結果が「0」となる

GROUP BY を指定していない(省略)の場合

SELECT COUNT(*) FROM (
                      SELECT SUM(URIKN)
                        FROM TESTTBL
                     )

COUNT の結果が「1」となる

まとめ

SELECTの結果で処理を分岐する場合などに重要となります
思わぬバグにならない様に気を付けましょう

サイトマップ

Oracle,SQL,データベース

Posted by こっぷ