문제

{id, username, firstName, lastName}을 포함하는 DB 고객 테이블이 있다고 상상해보십시오.

내가 할 수있는 첫 번째 이름이 다른 인스턴스 수를 찾고 싶다면 다음을 수행 할 수 있습니다.

select firstname,count(*) from Customers group by 2 order by 1;

   username | count(*)
   ===================
   bob      |   1
   jeff     |   2
   adam     |   5

동일한 쿼리를 어떻게 작성하여 두 번 이상 발생하는 첫 번째 이름 만 반환합니까? 위의 예에서는 Jeff와 Adam의 행만 반환합니다.

도움이 되었습니까?

해결책

당신은 원합니다 having 그러한 조항 :

select 
    firstname,
    count(*) 
from Customers 
group by firstname
having count(*) > 1
order by 1

다른 팁

group by 2 order by 1 끔찍합니다. 지원되는 경우 적절한 열 이름을 사용하십시오. 이는 가독성을 크게 향상시킵니다.

그것을 염두에두고

select firstname, count(*) c 
from Customers 
group by firstname  
having count(*) > 1 -- Kudos to Shannon
order by c;

그것이 바로 조항이하는 일입니다. 이것이 Informix에서 작동하는지 확실하지 않지만 샷을 줘요.

select firstname, count(*) 
from Customers 
group by firstname
HAVING COUNT(*) > 1
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top