2017-04-05 3 views
0

こんにちはみんなは、この質問のために提供さ答えは全く医学賞が与えられなかった年の量を示したコードを選択してください を下回っている(年、サブジェクト)欄SQL値が0の空のテーブルを処理する方法は?私はノーベル賞と呼ばれる表で、この問題をしようとしている

を持っています私たちのクエリ

SELECT COUNT(DISTINCT yr) FROM nobel WHERE yr NOT IN(....) 

を意味する医学が毎年指定された場合しかし、私の質問は、ある

SELECT COUNT(DISTINCT yr) FROM nobel 
    WHERE yr NOT IN (SELECT DISTINCT yr FROM nobel WHERE subject = 'Medicine') 

は、空のテーブルから選択し、代わりの戻り0になる、それエラーになります、この場合どのように対処する?

ありがとうございます!

+4

正しいデータベースにタグを付けてください。それはmysqlまたはsql-serverですか? –

+0

ここには何のエラーもありません。あなたはエラーメッセージを表示できますか?私はそれが通常0を返すだろうと思う。 – TriV

答えて

0

mysqlのIFNULL()を使用できます。

SELECT IFNULL(COUNT(DISTINCT yr), 0) FROM nobel WHERE yr NOT IN(....) 
0

フィルタ条件で対象列を使用すると、カウント列は次のようになります。

SELECT count(yr)FROM nobel WHERE件名<>「医学」。

上記のクエリを実行するだけで、年のカウントを取得できます。

0

は(すなわち、毎年のレコードがあります)毎年少なくとも一つの賞が与えられていると仮定すると:

select distinct n.yr, (select count(*) from nobel n1 where n1.subject = 'Medicine' and n1.yr = n.yr) cnt 
    from nobel n 
関連する問題