2013-06-03 10 views
0

У меня есть код ниже в SQL-запросе oracle. Этот код находит имя пользователя и сколько раз они голосовали каждый год. Как я могу изменить это, чтобы он показывал только тех пользователей, которые проголосовали за наибольшее количество раз?Oracle SQL query - Показать только max?

SELECT username, count(username), extract(year from voteDate) as vote_year, 
max(count(*)) over (partition by extract(year from voteDate)) as Max_votes 
FROM rankingInfo NATURAL JOIN memberinfo 
GROUP BY username, extract(year from voteDate); 

ответ

1

Если я понять Ваш запрос правильно, ваш max_votes Возвращает максимальную голос, которые вы хотите, и ваш count(username) возвращает голоса для каждого пользователя. Если да, то вы можете поместить результаты в подзапрос, а затем просто добавить WHERE критерии:

SELECT * 
FROM (
    SELECT username, count(username) votes, extract(year from voteDate) as vote_year, 
     max(count(*)) over (partition by extract(year from voteDate)) as Max_votes 
    FROM rankingInfo NATURAL JOIN memberinfo 
    GROUP BY username, extract(year from voteDate) 
) T 
WHERE votes = max_votes 
+0

'+ 1' хороший ответ':) ' –