2015-01-29 3 views
0

나는 다른 계산 및 company_id 4columns 결과 단일 문으로 이러한 SQL 문을 사용하려면.하나 이상의 SQL * 하나의 SQL에

누군가가이 작업을 수행하는 방법을 알려줍니다.

+0

하위 쿼리의 하위 쿼리없이'COMPANY_ID을 선택 (COUNT (*를 선택) 의견 FROM ... 어디 health__rating <7 group_ company_id) det, (SELECT COUNT (*) FROM feedbacks ...) neu' – knittl

+0

다른 방법으로 말해 줄 수 있습니까? 또는 액티브 레코드로 알고있는 경우 –

답변

4

MySQL을 위해 잘 작동합니다

select company_id, 
     sum(healthi_rating < 7) as det, 
     sum(healthi_rating between 7 and 8) as neu, 
     sum(healthi_rating >= 9) as pro 
from feedbacks a 
join(select id, company_id from users) b on a.user_id = b.id 
group by company_id 

을하고 ANSI SQL 표준을 사용하고 users

select b.company_id, 
     sum(case when healthi_rating < 7 then 1 else 0 end) as det, 
     sum(case when healthi_rating between 7 and 8 then 1 else 0 end) as neu, 
     sum(case when healthi_rating >=9 then 1 else 0 end) as pro 
from feedbacks a 
join users b on a.user_id = b.id 
group by b.company_id 
+0

또한이 솔루션은 SQL 쿼리 엔진이 정말 귀찮은 경우가 아니면 전체 테이블을 캐싱하기에 충분한 RAM이없는 경우를 제외하고 하위 쿼리 또는 별도 쿼리보다 훨씬 효율적이어야합니다. –

+0

감사합니다, 아주 잘 작동합니다. 이 커맨드에 sum을 사용한 이유는 무엇입니까? @juergen –

+0

'SUM()'의 조건은 참이면 '1'을, 거짓이면 '0'을 반환합니다. 'sum'은 그러한 실제 사례를 더합니다. 'count'를 사용할 수도 있지만'0' 일 경우 false case 대신'null'을 사용해야합니다. –

관련 문제