2014-12-10 2 views
0

where 문이 각 행마다 다른 select count 문을 만들려고합니다.Sql select 문과 다른 where 문

User: Job: 
Mark  Garbageman 
Dirk  Garbageman 
Henk  Garbageman 
Steven Garbageman 
Mark  Delivery 
Dirk  Delivery 
Henk  Delivery 
Steven Delivery 
Stevens Delivery 

지금 내가 이것을 위해 내가 사용하는, 내가 청소부의 작업 테이블 "작업"에있어 얼마나 많은 사용자가 알고 싶어 : 예를 들어
나는 다음과 같은 테이블이라고 dbo.job있어

Select COUNT(user) as count from job WHERE job.job = 'Garbageman' 

나는 다음과 같은 결과를 얻을 것이다 :

Count: 
4 

이 지금은 많은 사용자가 동일한 select 문에서 배달 일을 가지고 방법을 알고 싶어요를, 내가 뭔가를 얻을 것이다 같은 :

Select COUNT(user) as GarbageCount, COUNT(user) as Deliverycount from job WHERE job.job = 'Garbageman' 

지금 나는 다음과 같은 결과를 얻을 것이다 :

GarbageCount: DelivryCount: 
4    4 

을하지만 난 원하는 :

GarbageCount: DelivryCount: 
4    5 

나는 이유를 알고 :

지금 내가 다음과 같은 결과를 얻을 것이다 내 진술은 실패한다. 왜냐하면 나는 단지 1 문장만을 사용하기 때문이다. 그러나 GarbageCount와 DeliveryCount의 where 문은 서로 다릅니다. 그리고 나는 그런 질문을 어떻게 만드는지 전혀 모른다.

누군가 제안 사항이 있으십니까?

답변

0

당신은 때 백작이 사용 조건 sum()

select 
sum(Job = 'Garbageman') as GarbageCount, 
sum(Job = 'Delivery') as DelivryCount 
from job 
0

조건부 집계를 사용할 수 있습니다.

Select sum(case when j.job = 'Garbageman' then 1 else 0 end) as GarbageCount, 
     sum(case when j.job = 'Delivery' then 1 else 0 end) as Deliverycount 
from job j; 

데이터베이스를 지정하지 않지만, MySQL은 또한의 바로 가기를 제공합니다 : :이 ANSI 표준 방법은

Select sum(j.job = 'Garbageman') as GarbageCount, 
     sum(j.job = 'Delivery') as Deliverycount 
from job j; 
+0

는 U에게 선생님 감사합니다! 이것은 나를 위해 일한다! 이 웹 사이트를 사랑해 라! : 2 분 안에 대답을 수락합니다. – Urjen