2013-04-20 6 views
1

테이블 nobel (yr, subject, winner)이 있다고합시다.SQL에서 값의 출현을 카운트

그 해의 화학상 수, 그 해의 물리상 수의 란, 그 해의 결과를 얻고 싶습니다.

어떻게 하시겠습니까?

SELECT yr, count(subject='Physics'), count(subject='Chemistry') FROM nobel GROUP BY yr 

이 작동하지 않습니다.

+0

쿼리를 실행할 때 무엇을 얻고 있습니까? –

+0

해당 연도의 총 상금 수 2 열 – LucasSeveryn

답변

4

조건부가 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 
+0

감사합니다. – LucasSeveryn

1

을 의지하지이 작품?

select yr, subject, count(*) awards 
from nobel 
where subject in ('physics', 'chemistry') 
group by yr, subject 
+0

그것은 내가 원하던 것이 아니지만 어쩌면 문구가 내 질문에 맞지 않을 것입니다. 저는 그 해 화학 보너스 수와 그 해의 물리학 상 수를 원했습니다. – LucasSeveryn

관련 문제