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

如何在SQL中通过比较两个MAX()列获取最高销量对应的国家?

解决方案

要实现获取每种饮料销量最高的国家(销量取units_a_sold或units_b_sold中的较大值),可以通过以下两种方式补充SQL语句:

方法一:使用窗口函数(推荐,支持多饮料场景)

这种方法能清晰地对每个饮料的国家销量排名,筛选出排名第一的记录:

SELECT beverage, country
FROM (
    SELECT 
        beverage,
        country,
        -- 计算当前国家该饮料的单列最高销量
        GREATEST(units_a_sold, units_b_sold) AS max_unit_sold,
        -- 按饮料分组,对销量降序排名
        RANK() OVER (PARTITION BY beverage ORDER BY GREATEST(units_a_sold, units_b_sold) DESC) AS sales_rank
    FROM your_table_name -- 替换为实际表名
) ranked_sales
WHERE sales_rank = 1;

逻辑说明

  1. GREATEST(units_a_sold, units_b_sold):提取每个国家对应饮料的两列销量中的较大值
  2. RANK() OVER (...):按饮料分组,对每个国家的最大销量降序排名
  3. 外层查询筛选排名为1的记录,即为该饮料销量最高的国家

方法二:使用子查询匹配最大值

如果不支持窗口函数,可以用子查询找出每个饮料的最高销量,再匹配对应的国家:

SELECT t.beverage, t.country
FROM your_table_name t -- 替换为实际表名
WHERE GREATEST(t.units_a_sold, t.units_b_sold) = (
    SELECT MAX(GREATEST(units_a_sold, units_b_sold))
    FROM your_table_name
    WHERE beverage = t.beverage
);

验证示例

针对你提供的数据表,两种方法都会返回预期结果:

beveragecountry
fantaDE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:15:34