2013-06-03 146 views
0

我在下面的代码中有一个oracle SQL查询。此代码可查找每个成员的用户名以及他们每年投了多少次。我怎样才能修改它,以便它只显示投票次数最多的用户?Oracle SQL查询 - 仅显示最大值?

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'好'回答:)' –