saj*_*jid 7 sql t-sql sql-server sql-server-2008 greatest-n-per-group
我希望选择"价值"最大值的国家/地区作为"grpid".在检查最大值时,也不应考虑其他'grpid'选择'Country'.(即结果中不应重复国家或grpid)
结果:
Country grpid Value Row_number
US 49707 604456458 1
GB 5086 497654945 4
CA 909 353500201 10
JP 231 198291290 15
Run Code Online (Sandbox Code Playgroud)
试试这个查询,
WITH OrderedOrders AS
(
SELECT country,grpid,value,ROW_NUMBER() OVER(PARTITION BY country ORDER BY country,value DESC) AS 'RowNumber'
FROM test1
)
select * from OrderedOrders
where RowNumber =1
Run Code Online (Sandbox Code Playgroud)
我相信这就是你要找的:
;with cte as
(
select
country,
max(value) as MaxVal,
min(row_number) as MinRow
from test1
group by Country
)
select
c.country,
t.grpid,
c.MaxVal,
c.MinRow
from cte c
join test1 t
on t.country = c.country
and t.value = c.MaxVal
and t.row_number = c.MinRow
order by country, grpid
Run Code Online (Sandbox Code Playgroud)
您可以尝试一下这个查询吗
select
country,
value,
grpid,
count(*)
from test1
group by
country,
value,
grpid
order by
country,
value desc
Run Code Online (Sandbox Code Playgroud)