You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Snowflake中选取某列值最大的单条记录

解决方案

直接筛选目标记录

你的需求是精准匹配Name='Mike'且Score=79的行,最直接的写法就是用WHERE子句过滤:

SELECT Name, Score
FROM your_table
WHERE Name = 'Mike' AND Score = 79;

为什么你之前的写法不对

你之前用GROUP BY Name, Score加聚合函数的思路偏离了需求:

  • GROUP BY Name, Score会把每个不同的(Name, Score)组合单独分组,最终得到三条分组结果,而非你要的单行记录。
  • COUNT(Name)和greatest(Score)属于多余的聚合操作,你不需要统计数量或找最大值,只是要匹配特定值的行。

补充:如果是要找每个用户的最高得分记录

如果你实际需求是找出每个Name对应的最高Score的那条记录(比如Mike的最高得分79的行),可以用窗口函数RANK()或ROW_NUMBER()实现:

WITH ranked_scores AS (
    SELECT 
        Name, 
        Score,
        RANK() OVER (PARTITION BY Name ORDER BY Score DESC) AS score_rank
    FROM your_table
)
SELECT Name, Score
FROM ranked_scores
WHERE score_rank = 1;

这个写法会给每个用户的得分按从高到低排名,筛选出排名第一的行。如果有多个相同最高得分的行,RANK()会返回所有并列第一的行;若只想要其中一行,可换成ROW_NUMBER()。

内容的提问来源于stack exchange,提问作者gmelgkermglermgmrelkgm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:18:20