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

如何在BigQuery GoogleSQL中按产品分组取各产品Top10销售额国家

解决方案:多产品分组取各国销售额Top10

在多产品场景下,直接用LIMIT只能全局限制行数,无法按产品分组筛选。你可以借助BigQuery支持的窗口函数实现需求,以下是修改后的完整查询:

WITH sales_summary AS (
    SELECT
        date,
        product,
        country,
        SUM(total_sales) AS total_sales
    FROM
        `international_sales`
    WHERE 
        date = '2024-10-19'
        AND total_sales > 0
        AND product IN ('Product A', 'Product B')
    GROUP BY date, product, country
)
SELECT
    date,
    product,
    country,
    total_sales
FROM (
    SELECT
        *,
        ROW_NUMBER() OVER (PARTITION BY product ORDER BY total_sales DESC) AS sales_rank
    FROM sales_summary
)
WHERE sales_rank <= 10
ORDER BY product, sales_rank;

关键逻辑说明:

  1. 销售额汇总CTE:sales_summary完成你原始查询的聚合逻辑,确保每个产品-国家组合的销售额是计算后的总和;
  2. 窗口函数排名:内层查询用ROW_NUMBER() OVER (PARTITION BY product ORDER BY total_sales DESC),按product分组,每组内按销售额降序生成排名;
  3. 筛选Top10:外层查询过滤掉排名大于10的行,最终得到每个产品销售额最高的前10个国家。

如果需要保留并列排名的情况(比如多个国家销售额相同且均进入前10),可以将ROW_NUMBER()替换为RANK(),这样并列的行会获得相同排名,不会被错误过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:44:52