문제
{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
제휴하지 않습니다 StackOverflow