簡體   English   中英

SQL-查詢給定不同列的MAX值的MAX值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM