0

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

1 に答える 1

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
于 2013-06-03T13:52:11.063 に答える