假設我們有一張表nobel(年,主題,贏家)。計算SQL中值的出現次數
我想得到一年當年迴歸的結果,當年的化學獎數字欄,當年的物理獎項數。
你會怎麼做?
SELECT yr, count(subject='Physics'), count(subject='Chemistry') FROM nobel GROUP BY yr
不起作用。
假設我們有一張表nobel(年,主題,贏家)。計算SQL中值的出現次數
我想得到一年當年迴歸的結果,當年的化學獎數字欄,當年的物理獎項數。
你會怎麼做?
SELECT yr, count(subject='Physics'), count(subject='Chemistry') FROM nobel GROUP BY yr
不起作用。
您的查詢不起作用,因爲條件返回值爲0或1,count
計算非NULL值。
嘗試使用sum
代替count
:
SELECT yr, sum(subject='Physics'), sum(subject='Chemistry')
FROM nobel
GROUP BY yr
順便說一句,不是所有的數據庫處理的條件表達式爲整數。標準的語法是:
select yr, sum(case when subject = 'Physics' then 1 else 0 end) as NumPhysics,
sum(case when subject = 'Chemistry' then 1 else 0 end) as NumChemistry
from nobel
group by yr
您還可以通過執行獲得多行相同的信息:
select yr, subject, count(*)
from Nobel
where subject in ('Physics', 'Chemistry')
group by yr, subject
謝謝,那個作品! – LucasSeveryn 2013-04-20 15:25:56
不會在工作?
select yr, subject, count(*) awards
from nobel
where subject in ('physics', 'chemistry')
group by yr, subject
它會的,但它不是我想要的,也許我沒有說我的問題是正確的,我想在那一年獲得一系列化學獎項,並在當年獲得一系列物理獎項 – LucasSeveryn 2013-04-20 15:35:05
當你執行查詢時,你會得到什麼? – 2013-04-20 15:23:58
當年獎勵總數的兩列 – LucasSeveryn 2013-04-20 15:25:04