group by句などを使ってnullを集計したい


SQLの質問です。今、2つのテーブルがあります。
仮にA表、B表とします。
それぞれ何十にも列(カラム)が並んでおり、各列に対して1000行(レコード)ほどのデータがあります。
データの中身は数字が入っていたり、文字が入っていたり、何も入っていなかったり(null)と、バラバラです。
この状況におきまして。
ーーーーーーーー
select a.列A,b.列B,c.列C from 表A hyoua
left outer join 表B hyoub
on hyoua.kakaku=hyoub.kakaku
where hyoub.kakaku is null;
ーーーーーーーー

と、表Aと表Bが共通して持つkakaku列で2つのテーブルを結合しまして。
さらに表Bの方のkakaku列にて、データ入ってない行のみを抽出しました。

そしてここから、ずらりと並んだnullがあるのですが。
このnullが何個あるのか、group by~?等の集計する関数を使って、数を数えたいです。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2018/10/14 19:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:moon-fondu

whereがいらないとか、havingがいる等、 ネットも探したのですが、あまり「データがないセルの集計」というのは、 さらにテーブルを結合した後からの展開となりますと、 なかなか情報が見当たらず…お教えいただけますと幸いです。

よろしくお願い致します。

※ちなみに表A、表B、列A…などは、本来はローマ字なのですが、質問を判りやすくするために日本語にさせていただいております<m(__)m>

回答1件)

id:degucho No.1

回答回数281ベストアンサー獲得回数75

ポイント500pt

DBMSがなんだかわかりませんが
SUMやCOUNTなどの関数は通常NULLを無視しますので
COUNT(*) - COUNT(列名)
で算出できます。
もしくは
SUM(CASE WHEN 列名 IS NULL THEN 1 ELSE 0 END)

id:moon-fondu

ご回答ありがとうございます。
COUNT(*) - COUNT(列名)は使わなかったのですが、
count関数とgroup by句でうまくいきました!

2018/10/07 00:26:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません