2014-08-28 2 views
2

다소 어려운 쿼리가 있습니다. 'key_phrases'라는 테이블 ('user', 'phrase', 'tfw')에 쿼리를 작성해야합니다. 'tfw'열의 값이 가장 높은 각 사용자의 상위 10 % . 쿼리는 모든 열을 반환해야합니다. 사전에 감사, 무기 호SQL 상위 n % 열 선택

+0

무엇 datapye가 'FTW'컬럼이 들어 더 빠르게 처리 될 변수를 사용하여 다른 쿼리? 이 칼럼의 의미는 정확히 무엇입니까? 어떤 예제 값을 사용할 수 있습니까? – reporter

+0

ftw (float)의 값 : 0.00473934, 0.00173913 – user3628777

답변

2
select user, phrase, tfw 
from key_phrases t1 
join (
    select count(*) total_rows_per_user, user 
    from key_phrases 
    group by user 
) t2 on t1.user = t2.user 
where (
    select count(*) from key_phrases t3 
    where t3.user = t1.user 
    and t3.tfw >= t1.tfw 
)/total_rows_per_user <= .1 

select user, phrase, tfw, 
if(@prev_user = user, @user_count := @user_count + 1, @user_count := 1), 
@prev_user := user 
from key_phrases t1 
join (
    select count(*) total_rows_per_user, user 
    from key_phrases 
    group by user 
) t2 on t1.user = t2.user 
cross join (select @user_count := 1, @prev_user := null) t3 
where @user_count/total_rows_per_user >= .9 
order by user, tfw 
+0

감사합니다. 매우 감사 – user3628777