根据Snowflake中最大的一列的值来选择一条记录



假设我有一个结构类似的表

名称 得分
Mike 40
Mike 79
Mike 49

不知道为什么其他答案会使事情复杂化,你只想使用max函数,比如:

WITH data(name, score) as (
select * from values
('Mike', 40),
('Mike', 79),
('Mike', 79)
)
select name, max(score) as score
from data 
where name ='Mike' group by name;

与您的查询:

SELECT Name, COUNT(*), max(Score) FROM
table GROUP BY Name

CCD_ 1是"1";类似的";从功能的角度来看,对max来说,但正如您所提到的,它不起作用,这是因为它的签名——它不意味着接收单个expr作为输入。我建议你阅读max和great之间的区别,以确保你完全理解它们。

使用QUALIFY和RANK/ROW_NUMBER:

SELECT *
FROM tab
QUALIFY RANK() OVER(PARTITION BY Name ORDER BY Score DESC) = 1

长格式解释:

如果你添加一个ROW_NUMBER和一个RANK到更改的数据:

WITH data(name, score, extra) as (
select * from values
('Mike', 40, 'a'),
('Mike', 79, 'b'),
('Mike', 79, 'c')
)
select *
,row_number() over (partition by name order by score desc) as rn
,rank() over (partition by name order by score desc) as rank
from data;
EXTRA<1><1>1<1>
NAME分数RNRANK
Mike79b
Mike79c2
Mike40a3

最新更新