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
。但是我想 运行 此查询 T
中 A
的所有值,即对于 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_NUMBER
window函数来制作
SELECT A,
B,
C,
D
FROM (
SELECT *,ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) rn
FROM T
) t1
WHERE rn = 1
我在 Amazon Athena 中 运行 有一个 SQL 查询:
select
A,
B,
C,
D,
from
T
where
A = '1000'
order by
B desc
limit 1
我按 B
排序,第一行只取 1000
的值 A
。但是我想 运行 此查询 T
中 A
的所有值,即对于 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_NUMBER
window函数来制作
SELECT A,
B,
C,
D
FROM (
SELECT *,ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) rn
FROM T
) t1
WHERE rn = 1