【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の結果で処理を分岐する場合などに重要となります
思わぬバグにならない様に気を付けましょう