sql - 查询 table 中有限制的所有值

sql - query for all values in table with limit

我在 Amazon Athena 中 运行 有一个 SQL 查询:

select 
    A,
    B,
    C,
    D,
from
    T
where
    A = '1000'
order by
    B desc
limit 1

我按 B 排序,第一行只取 1000 的值 A。但是我想 运行 此查询 TA 的所有值,即对于 T 中的每个 A 仅获取第一行并附加到结果.

我该怎么做?

table 数据示例:

A     B           C D
1000 '12/01/2021' 1 7
1000 '10/01/2020' 2 8
1333 '06/01/1920' 3 9
1333 '07/01/1920' 4 10
1999 '09/03/1960' 5 11
1999 '09/03/1950' 6 12

而我想要得到的结果是:

1000 '12/01/2021' 1 7
1333 '07/01/1920' 4 10
1999 '09/03/1960' 5 11

你可以尝试用ROW_NUMBERwindow函数来制作

SELECT A,
    B,
    C,
    D
FROM (
    SELECT *,ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) rn
    FROM T
) t1
WHERE rn = 1