![](/img/trans.png)
[英]SELECT hotel name with highest number of reservations in each year Oracle sql (Query)
[英]I need to find highest voters in each year Oracle SQL query
我有一张表让我们说排名信息
username mvid votedate
john 1 23-sep-90
john 2 23-sep-90
smith 1 23-sep-90
john 3 24-oct-91
smith 3 24-oct-91
smith 4 25-dec-91
smith 5 25-dec-91
我需要在sqldeveloper(Oracle)中编写一个sql查询,这将给我每年投票数最多的成员。 输出应为用户名,年份,每年的总票数。 让我们考虑上面的例子:我需要这样的输出。
username year number_Of_Votes
john 1990 2
smith 1991 3
因为在1990年,约翰以1票的优势击败史密斯,而在1991年史密斯以2票击败约翰。
我到了计算所有选票的地步但我无法获得一年内的最高票数。
这就是我所做的:
select r1.username,
Extract(year from r1.votedate)"Year",
count(username)
from rankinginfo r1
where Extract(year from r1.votedate) is not null
group by Extract(year from r1.votedate),
r1.username;
order by Extract(year from r1.votedate),
username;
select *
from (
select VotesPerUserPerYear.*
, dense_rank() over (
partition by voteyear
order by votecount desc) as rn
from (
select username
, extract(year from votedate) as voteyear
, count(*) as votecount
from YourTable
group by
username
, extract(year from votedate)
) VotesPerUserPerYear
) SubQueryWithRank
where rn = 1 -- Only top voter per year
一种方法是
select username, year, cnt from (
select username, cnt, row_number() over (partition by year order by cnt desc) rn
from (
select username, to_char( votedate, 'YYYY' ) year, count(*) cnt
from rankinginfo
group by to_char( votedate, 'YYYY' )
)
) where rn = 1
您可以尝试下面的一个:
SELECT MAX(point) as HIGHEST
FROM
(SELECT pointA as point FROM tableA
UNION
SELECT pointB as point FROM tableB) t
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.