SQL で SELECT 文の結果の行数を数えるときに使用する集計関数はどれですか?
1〜4キーで選択、Enterで回答できます
解説
正解は「COUNT()」です。COUNT() は条件に一致した行の件数を返す集計関数(複数行をまとめて1つの値にする関数)で、行数を知りたいときの基本になります。基本的な使い方-- users テーブルの全行数を数えます SELECT COUNT(*) FROM users; -- WHERE で絞り込んだ結果の行数も数えられます SELECT COUNT(*) FROM users WHERE active = 1; -- GROUP BY と組み合わせるとグループごとの件数になります SELECT country, COUNT(*) FROM users GROUP BY country;COUNT(*) と COUNT(列名) は NULL の扱いが違いますここは取り違えやすいところです。COUNT(*) は行そのものを数えるため、値が NULL(値が存在しない状態)の列があっても必ず数えます。一方 COUNT(email) のように列を指定すると、その列が NULL の行は数えません。「全件数のはずなのに少ない」という不一致は、たいていこれが原因です。重複を除いて数えたい場合は COUNT(DISTINCT email) と書きます。他の選択肢が誤りである理由「SUM()」は数値列の合計値を返す集計関数です。行数を求めたい場合は SUM(1) と書けば近い結果にはなりますが、本来の用途ではありません。「LENGTH()」は文字列の長さ(文字数やバイト数)を返す関数で、行ごとに1つの値を返すだけなので集計関数ではありません。「ROW_NUMBER()」は各行に連番を振るウィンドウ関数です。行をまとめずに番号を付けるだけなので、件数そのものは得られません。参考MySQL 8.0 リファレンスマニュアル: 集計関数PostgreSQL: Aggregate Functions