2014-02-19 2 views
0

사용자가 테이블에 존재하는 횟수의 카운트 인 열 num에 기초하여 순위를 매기는 방법. 또한 2 명의 사용자가 동일한 카운트를 갖는 경우 사용자가 아래보다 작은 순위로 사용자를 제공해야합니다. 예 : user 1 및 2의 수가 3이면 사용자 1이 순위 1이고 사용자 2가 순위 3이고 1이 새 사용자 3 인 경우 사용자 3은 순위 3입니다.카운트 번호에 기초한 순위 사용자

어떻게하면됩니까? 어떤 도움을 주셔서 감사합니다. 사전 감사합니다.

http://sqlfiddle.com/#!2/a9188/2

CREATE TABLE if not exists tblA 
(
id int(11) NOT NULL auto_increment , 
user varchar(255), 
category int(255), 
PRIMARY KEY (id) 
); 


INSERT INTO tblA (user, category) VALUES 
('1', '1'), 
('1', '2'), 
('1', '3'), 
('1', '1'), 
('2', '1'), 
('2', '1'), 
('2', '1'), 
('2', '1'), 
('3', '1'), 
('2', '1'); 

응답 등 : 그 '하나'

user category count rank 

1  1   2  1 
2  1   2  2 

쿼리가 사용하는 카테고리 검색 : 예를 들어

SELECT USER, 
     category, 
     count(*) AS num 
FROM tblA 
WHERE category=1 
GROUP BY USER, 
     category 
ORDER BY num DESC; 
+2

이 게시물 (http://stackoverflow.com/questions/3333665/mysql-rank-function)을보고 도움이되는지 확인하십시오. –

+0

당신이 찾고있는 것은'rank by partition by'입니다. – Rahul

+0

@ Rahul 그래,하지만 여전히 MySQL에 존재하지 않습니다 .. –

답변

2

사용하여 하위 쿼리 :

SELECT 
    groups.*, 
    @rank:[email protected]+1 AS rank 
FROM 
    (select 
    user, 
    category, 
    count(*) as num 
    from 
    tblA 
    where 
    category=1 
    group by 
    user, 
    category 
    order by 
    num desc, 
    user) AS groups 
    CROSS JOIN (SELECT @rank:=0) AS init 

- 수정 한 demo을 선택하십시오.

+0

첫째, 쿼리 주셔서 감사. usernames를 얻으려면 userid에 사용자를 가입 시키려면 addon 쿼리 http://sqlfiddle.com/#!2/305d2/10이 있어야합니다. – jason