![](/img/trans.png)
[英]SQL Query to Get Max Value Based on Different Max Value Given Multiple Records
[英]SQL - Query MAX value given MAX value of different column
我的表有三列[ID], [YEAR], [MALES]
,對於任何給定的ID,在多個YEAR值上可以有多個MALES值。
EX。
[ID] [YEAR] [MALES]
1 2010 10
1 2011 20
1 2011 35
1 2011 0
1 2012 25
1 2012 10
2 2010 5
2 2011 2
2 2011 11
2 2011 12
2 2012 0
2 2012 10
我需要查詢每個ID的最大YEAR和該年份的最大MALES值。 因此,以上示例的結果將是:
[ID] [YEAR] [MALES]
1 2012 25
2 2012 10
您要使用row_number()
進行此操作:
select id, year, males
from (select t.*,
row_number() over (partition by id
order by years desc, males desc
) as seqnum
from t
) t
where seqnum = 1;
;with CTE as
(
select
*,
row_number() over (partition by ID order by year desc, males desc) as row_num
from table
)
select *
from CTE
where row_num = 1
要么
;with CTE as
(
select ID, max(Year) as Year
from table
group by ID
)
select t.ID, t.Year, max(males) as males
from table as t
inner join CTE as c on c.ID = t.ID and c.Year = t.Year
group by t.ID, t.year
您需要使用子查詢來獲取最大年份,然后加入該查詢以獲取該年份的最大MALES。
SELECT T.ID
,SQ.MAX_YEAR
,MAX(T.MALES)
FROM TABLE1 T
INNER JOIN
(
SELECT ID
,MAX(YEAR) AS MAX_YEAR
FROM TABLE1
GROUP BY
ID
) SQ
ON T.ID = SQ.ID
AND T.YEAR = SQ.MAX_YEAR
GROUP BY
T.ID
,SQ.MAX_YEAR
如果我了解您想要的內容(您的措詞有些困難,但是該示例使您看起來像我想要第二個)。
每個ID的最長年份:
SELECT id, MAX(year) FROM data;
每個最長年份ID的最多男性人數:
SELECT id, year, MAX(males) FROM data WHERE year = (SELECT MAX(year) FROM data)
GROUP BY id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.