2014-06-06 4 views
1

메신저 현재 SQL 문제가 있습니다.간단한 SQL 계산 및 하위 쿼리

Q : 제품 표를 사용하여 하나의 모델 만 생산하는 제조업체 수를 확인하십시오.

데이터베이스 방식은 네 개의 테이블로 구성 제품 (제조사, 모델, 유형)

표 "제품"제조사, 모델 번호 및 유형 ('PC', '노트북'에 대한 정보가 포함되어 있습니다, 또는 '프린터'). 제품 테이블의 모델 번호는 모든 제조업체 및 제품 유형에 대해 고유 한 것으로 가정합니다.

쿼리는 :

select count(maker) from product group by maker having count(model)=1 

Select count(*) from (select maker from product group by maker having count(model)=1)as A 

나는 그들이 나에게 같은 모양이 두 쿼리의 차이가 무엇인지 궁금했지만, apprently 두 번째는 올바른 ANS입니다.

+0

없음 모두 수를 줄 것이다 첫번째 다르다 제조 업체 당 얼마나 많은 제조 업체에 두 번째 줄 것입니다 행을 deoends 줄 것입니다 하나의 모드와 단일 행에 발생합니다 모든 메이커에 대한 것입니다 –

+1

메이커에 NULLs가 있습니까? COUNT (column_name)은 column_name에서 널 (NULL)을 무시하고 COUNT (별표)는 곧은 행 수를 제공합니다. 최상위 쿼리를 COUNT (별표)로 변경하고 동일한 결과를 얻는다면 문제가 될 것입니다. – VBlades

답변

3

첫 번째 쿼리를 살펴 보겠습니다.

create table product (maker int not null, model int not null); 
insert into product (maker, model) values (1,1),(1,2),(2,1),(3,1),(4,1),(5,1); 

select maker from product group by maker having count(model)=1 
MAKER  
------- 
     2 
     3 
     4 
     5 

즉 메이커 2,3,4,5에는 정확히 하나의 제품이 있습니다.

select count(maker) from product group by maker having count(model)=1 

각 메이커

------- 
     1 
     1 
     1 
     1 

반면에 다른 쿼리, 얼마나 많은 업체 계산됩니다 즉, 사람을 발생

select count(*) from (select maker from product group by maker having count(model)=1) 

-------- 
     4 
+1

이제 OP 만 해봤다면 – Strawberry