2012-09-07 3 views
2

테이블의 모든 '이메일'행을 계산하고 빈도를 기반으로 모든 값을 반환하는 쿼리를 수행하고 싶습니다. 결과를 그룹화하고 싶지는 않습니다. 결과의 모든 변형을 보여주고 싶습니다. 여기에 내가 지금까지 가지고있는 것이 있습니다. 빈도별로 정렬 할 수 있지만 그룹별로 병합 할 수 있기 때문에 보여줄 수 있습니다. 그들 모두가 빈도 순이다.빈도에 따라 모든 행 및 값을 계산하십시오.

select email 
from uploads 
group by email 
order by count(*) desc 

SQL - 여기

CREATE TABLE uploads 
(
email varchar(200) 
); 

INSERT INTO uploads 
(email) 
VALUES 
('[email protected]'), 
('[email protected]'), 
('[email protected]'), 
('[email protected]'), 
('[email protected]'), 
('[email protected]'), 
('[email protected]'); 

내가

|    EMAIL | 
---------------------- 
| [email protected] | 
| [email protected] | 
| [email protected] | 
| [email protected] | 
| [email protected] | 
| [email protected] | 
| [email protected] | 

답변

5

당신은 하강 횟수가 이메일 및 주문 당 총 COUNT()을 반환하는 하위 쿼리에 가입하실 수 있습니다 싶습니다 결과입니다 :

SELECT 
    uploads.EMAIL 
FROM 
    uploads 
    JOIN (
    /* subquery returns distinct emails and their aggregate COUNT() */ 
    /* JOIN matches every row in `uploads` to the email and count */ 
    SELECT EMAIL, COUNT(*) as num FROM uploads GROUP BY EMAIL 
) c ON uploads.EMAIL = c.EMAIL 
ORDER BY 
    c.num DESC, 
    EMAIL ASC 
|    EMAIL | num | 
---------------------------- 
| [email protected] | 3 
| [email protected] | 3 
| [email protected] | 3 
| [email protected] | 2 
| [email protected] | 2 
| [email protected] | 1 
| [email protected] | 1 
+0

당신에게 선생님 감사합니다 14,효과적으로, 이것은 당신이 실제로하지 불구하고 SELECT 목록에서 num 열을 포함, 다음과 같은 결과를 생성! 내가 할 수있을 때 나는 당신의 대답을 받아 들일 것입니다. – Adam

관련 문제