2017-04-05 36 views
0

嗨,大家好我想這個問題有一個叫諾貝爾表有(年,主題)列SQL如何用0值處理空表?

提供這個問題的答案是低於 選擇,顯示在沒有醫學獎分別給予年量代碼

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

不過,我的問題是,如果該藥每年,這意味着我們的查詢

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

將一個空表中選擇,然後的,而不是返回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 subject <>'Medicine'。

你可以運行上面的查詢來獲得年份數。

0

假設每年至少有一個獎項頒發給(即有每年的記錄):

select distinct n.yr, (select count(*) from nobel n1 where n1.subject = 'Medicine' and n1.yr = n.yr) cnt 
    from nobel n