今回は、Silverの「S3 開発/SQL - S3.2 組み込み関数(集約関数)」からの出題です。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2011年11月4日
RDBMS における NULL は非常に特殊な値なので注意が必要です。
例えば、足し算や掛け算など算術演算を通常の数値と NULL で実行すると、結果が NULL になります。これは例えば、
SELECT 2 + NULL; と SELECT 2 + 0;
を実行すればその違いが理解できるでしょう。
RDBMS では列の合計値や平均値を計算するための集約関数が用意されています。
集約関数の実行時、NULL のデータがあると、そのデータを無視して計算が行われます。
count() 関数はデータの件数を数えますが、NULL のデータは無視するためcount(val) は 4 となります。
ただし、count(*) だけは特殊で、これはすべての列が NULL であっても 1 行として数えるので、count(*) は 5 が返ります。
avg() 関数はデータの平均値を計算します。sample1 テーブルには 5 行のデータがありますが、val 列で NULL でないデータは 4 件です。avg(val) は NULLでないデータ 4 件の平均値を計算するので、2.5 が返ります。
従って、正解は C です。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.