2013-06-03 2 views
0

J'ai le code ci-dessous dans une requête Oracle Oracle. Ce code trouve le nom d'utilisateur d'un membre et combien de fois ils ont voté chaque année. Comment puis-je modifier cela afin qu'il ne montre que les utilisateurs qui ont voté le plus grand nombre de fois?Oracle requête SQL - Afficher max uniquement?

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); 

Répondre

1

Si je comprends bien votre question, votre max_votes retourne les votes max que vous voulez et vos count(username) renvoie les votes pour chaque utilisateur. Si oui, vous pouvez mettre les résultats dans une sous-requête, puis il suffit d'ajouter WHERE critères:

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' bonne réponse':) ' –