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

如何使用子查询中的rank函数筛选总销售额最高的seller_id

正确实现SQL

你编写的初始子查询存在两处逻辑问题:

  • RANK()窗口函数的排序依据使用了原始字段price,不是聚合后的总销售额,排名逻辑错误
  • 子查询未返回seller_id字段,外层查询无法提取该字段

完整可运行SQL如下:

SELECT seller_id
FROM (
    SELECT
        seller_id,
        SUM(price) AS total_sales,
        RANK() OVER (ORDER BY SUM(price) DESC) AS sales_rank
    FROM sales
    GROUP BY seller_id
) AS sales_stat
WHERE sales_rank = 1;

逻辑说明

  • 内层子查询先按seller_id分组,计算每个卖家的累计销售额,同时用RANK()对累计销售额降序排名,相同销售额的卖家会获得相同排名
  • 外层查询过滤排名为1的记录,仅返回seller_id字段,即可得到所有总销售额并列最高的卖家ID

如果表中price字段为商品单价,总销售额需要按「单价×销量」计算,只需将语句中的SUM(price)替换为SUM(price * quantity)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:03