2012-09-22 3 views
4

Domain이라는 MySQL 테이블이 있다고 가정 해 보겠습니다. 이 테이블에서 가장 인기있는 이메일 도메인을 어떻게 찾을 수 있습니까? 직접 최대 개수의 모든 행을 찾고 싶습니다.최대 행 선택

Domain  
gmail.com  
gmail.com  
gmail.com  
yahoo.com  
yahoo.com  
yahoo.com  
rediffmail.com  
rediffmail.com 
mail.com 

내 원하는 출력 :

Domain  No_of_users 
gmail.com 3 
yahoo.com 3 
+1

가장 많이 사용되는 기록. 그래서 gmail과 yahoo는 모두 3 번만 사용되지만 rediffmail은 사용되지 않으므로 3 번 이하로 사용됩니다. – GolezTrol

+0

한계를 사용하고 싶지 않습니다. – Alonso

+0

@ user1690831, 내가하고있는 혼란을 막기 위해 예제 데이터를 조금 더 추가했습니다 ... – Ben

답변

2
select 
    x.Domain, 
    x.No_of_users 
from 
    (select 
    d.Domain, 
    count(d.Domain) as No_of_users 
    from 
    Domain d 
    group by 
    d.Domain) x 
where 
    x.No_of_users = 
    (select 
     max(x2.No_of_users) 
    from 
     (select 
     d2.Domain, 
     count(d2.Domain) as No_of_users 
     from 
     Domain d2 
     group by 
     d2.Domain) x2) 
+0

superb. 나를 위해 일했습니다. 고마워요. – Alonso

+0

너무 복잡합니다. @ Marlin의 응답은 많은 서브 쿼리없이 동일합니다. –

2
SELECT Domain, count(id) 
FROM Domain 
GROUP BY Domain.Domain 
HAVING count(id) = (SELECT count(id) FROM Domain D GROUP BY D.Domain ORDER BY count(id) DESC LIMIT 1)