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

使用FIRST_VALUE()时如何获取各区域最高销量对应的商品记录

解决方案

方法1:使用ROW_NUMBER()窗口函数(最推荐,逻辑直观易维护)

这是实现该需求最常用的方案,直接给每个区域内的行按销量倒序排序后取第一位,就能拿到完整的行信息:

SELECT region, item, units_sold
FROM (
    SELECT 
        region,
        item,
        units_sold,
        ROW_NUMBER() OVER (PARTITION BY region ORDER BY units_sold DESC) AS rn
    FROM region_view
) t
WHERE rn = 1
ORDER BY region;

如果业务场景中存在同一个区域多个商品销量并列最高、需要全部返回的情况,把ROW_NUMBER()替换为RANK()即可。


方法2:基于原有FIRST_VALUE写法调整

你之前的写法只提取了最高销量值,只要同时对item字段也取窗口的第一个值,再去重也能得到预期结果:

SELECT DISTINCT 
    region, 
    FIRST_VALUE(item) OVER (
        PARTITION BY region 
        ORDER BY units_sold DESC 
        RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
    ) AS item,
    FIRST_VALUE(units_sold) OVER (
        PARTITION BY region 
        ORDER BY units_sold DESC 
        RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
    ) AS best_selling
FROM region_view
ORDER BY region;

这种写法需要重复写两次窗口逻辑,相比方法1可读性和维护性都更低,更推荐使用第一种方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:45:02