需要 select row_number 这是最后一个

Need to select row_number which is last

--------------------------------------------------------------
AnimalName  AnimalType  RowNumber   
---------------------------------------------------------------
Chicken         Bird        1   
Duck            Bird        2       
Alpaca          Mammal      1   
Camel           Mammal      2   
Carabao         Mammal      3   
Whale           Sea         1   
Shark           sea         2   
Prawns          Sea         3   
Eel             sea         4   

输出

AnimalName      AnimalType  RowNumber   
------------------------------------------------------------        
Duck              Bird          2   
Carabao           Mammal        3   
Eel               sea           4   

查询:

  SELECT t.* from (
select  
    AnimalName,
    AnimalType,
    ROW_NUMBER() OVER(PARTITION BY AnimalType ORDER BY AnimalName) AS RowNumber
FROM    Animal A
) t
where rownumber=1

以上查询为我提供了所有第一个行号,如果我想 select 最后一个行号,那么我必须进行哪些更改。 例如:鸟类最大行数为 2,哺乳动物最大行数为 3,海洋最大行数为 4

只需使用 DESC 而不是 ASC 作为 ORDER BY:

SELECT a.* 
FROM (SELECT AnimalName, AnimalType,
             ROW_NUMBER() OVER (PARTITION BY AnimalType ORDER BY AnimalName DESC) AS RowNumber
      FROM Animal a
     ) a
WHERE rownumber = 1;

如果你真的想保持行号相同,那么使用COUNT(*)进行比较:

SELECT a.AnimalName, a.AnimalType, a.rownumber
FROM (SELECT AnimalName, AnimalType,
             ROW_NUMBER() OVER (PARTITION BY AnimalType ORDER BY AnimalName) AS RowNumber,
             COUNT(*) OVER (PARTITION BY AnimalType) as cnt
      FROM Animal a
     ) a
WHERE rownumber = cnt;