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~?等の集計する関数を使って、数を数えたいです。
whereがいらないとか、havingがいる等、 ネットも探したのですが、あまり「データがないセルの集計」というのは、 さらにテーブルを結合した後からの展開となりますと、 なかなか情報が見当たらず…お教えいただけますと幸いです。
よろしくお願い致します。
※ちなみに表A、表B、列A…などは、本来はローマ字なのですが、質問を判りやすくするために日本語にさせていただいております<m(__)m>
DBMSがなんだかわかりませんが
SUMやCOUNTなどの関数は通常NULLを無視しますので
COUNT(*) - COUNT(列名)
で算出できます。
もしくは
SUM(CASE WHEN 列名 IS NULL THEN 1 ELSE 0 END)
で
ご回答ありがとうございます。
2018/10/07 00:26:30COUNT(*) - COUNT(列名)は使わなかったのですが、
count関数とgroup by句でうまくいきました!