集計関数COUNT()でのNULLの扱い

スポンサーリンク

集計関数COUNT()でのNULLの扱いは注意が必要

集計関数のCOUNT()は条件にマッチするレコードの件数を
数えるのに使われます。

よくあるパターンのSQL

よくあるのは

のように集計関数COUNT()の引数に「*」を指定するもの。

これは意図通り「条件にマッチする件数」を取得できます。

実は集計関数COUNT()は引数に「*」を指定場合は
純粋に引数に「条件にマッチする件数」を取得しますが、
「*」ではなく「項目名」を指定した場合はその項目に
NULLが含まれているとその行はカウントしません。

以下に具体例で見てみます。

テーブルの準備

データ検索用のテーブルを準備します。
このテーブルは生徒の国語と英語の試験結果を管理
します。
受験していない場合はその項目はNULLになります。

データの準備

データを準備します。

上記のデータでは四郎さんは英語は未受験になります。

name j_point e_point
五郎さん 80 80
三郎さん 70 70
四郎さん 0 NULL
次郎さん 80 80
太郎さん 90 90

3.NULLを含めたデータの件数

集計関数COUNT()でNULLを含めた項目をカウントすると
以下のようになります。

レコード総数 国語の受験者数 英語の受験者数
5 5 4

国語の受験者数は5人なのに対して英語の受験者数は四郎さんを除いた
4人になってます。

集計関数COUNT()はNULLを含む項目が指定された場合は
NULLをカウントの対象から外します。

なので、正しい平均点を求めようと思うと
COUNT(*)ではなくCOUNT(国語の受験者数)、COUNT(英語の受験者数)
と言うように指定しなければなりません。

国語の平均点 英語の平均点
64 80

集計関数SUM()やAVG()なども同じ様な動作をします。

SQL Server
スポンサーリンク
色白おばけをフォローする

おすすめプログラミングスクール

「侍エンジニア塾」は、未経験者でも結果が出せるプログラミング学習サービスです。
専属のインストラクターとの対面かSkypeでのレッスンを通じてプログラミングスキルを身につけて頂き、就職や転職までサポートします。
「侍エンジニア塾」の『3つ』の大きな特徴

  1. 完全マンツーマンレッスン
  2. フルオーダーメイドカリキュラム作成
  3. 独立・起業・フリーランス支援

誰もが自分の技術で稼げる人材になるための教育プログラム
TECH::EXPERTのこだわりは「実務的な教育コンテンツ」と「徹底したサポート体制」の2つです。

  1. 現場で使える実践的な技術が身につく
    有名企業のエンジニアへヒアリングを重ね、1年かけて創り上げた教育プログラムがあなたを実務レベルの即戦力エンジニアへ高めます
  2. 学習方法はライフスタイルに合わせて学べます
    ・一気にエンジニアへ駆け上がる「短期集中スタイル」
    ・無理なく確実にエンジニアへ「週末集中スタイル」
    ・自分のペースで自由に学ぶ「オンラインスタイル」

TECH::CAMP(エンジニアスクール)。
【Webアプリケーションコース】
全くの未経験からWebアプリケーション開発に必要なスキルを全て学ぶことができます。
【iPhoneアプリコース】
全くの未経験から最新の開発言語Swiftを用いてiPhoneアプリ開発を学ぶことができます。
自分だけのiPhoneアプリつくって世界に向けてリリースしたい方には自信を持っておすすめできる内容です。

ソフトウェア開発日記
タイトルとURLをコピーしました