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

BigQuery按月统计Top20供应商销售额及关联指标查询问题

BigQuery 按月份取Top20供应商统计SQL方案

你原来的写法使用approx_top_sum仅能获取供应商对应的销售额汇总值,无法同时统计折扣总和、商品售出数量两个指标,且该函数返回数组结构未展开,无法输出每个供应商单独行的结果。以下是可直接满足需求的查询语句:

WITH vendor_monthly_agg AS (
  -- 按月份+供应商维度聚合,计算单个供应商单月的所有统计指标
  SELECT
    FORMAT_DATETIME('%Y-%m', date) AS month,
    vendor AS vendor_name_top20,
    -- 处理item_price的逗号为小数点后转数值求和,若逗号为千分位可修改替换逻辑
    SUM(SAFE_CAST(REPLACE(item_price, ',', '.') AS FLOAT64)) AS sum_of_vendor_sales,
    SUM(discount_price) AS sum_of_vendor_discount,
    COUNT(1) AS item_count_sold
  FROM `你的项目.你的数据集.你的表名` -- 替换为实际表路径
  GROUP BY month, vendor
),
vendor_monthly_rank AS (
  -- 对同月份的供应商按销售额降序排名
  SELECT
    *,
    ROW_NUMBER() OVER(PARTITION BY month ORDER BY sum_of_vendor_sales DESC) AS rk
  FROM vendor_monthly_agg
)
-- 过滤取每个月前20名供应商,按月份、排名排序输出
SELECT
  month,
  vendor_name_top20,
  sum_of_vendor_sales,
  sum_of_vendor_discount,
  item_count_sold
FROM vendor_monthly_rank
WHERE rk <= 20
ORDER BY month, rk;

注意事项

  • 你的表只有26万行数据量很小,上述精确计算的方案性能完全足够,不需要使用近似函数
  • 若date字段为DATE类型而非DATETIME类型,将FORMAT_DATETIME替换为FORMAT_DATE即可
  • 若item_price中的逗号为千分位分隔符,将REPLACE逻辑修改为REPLACE(item_price, ',', '')即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:45:04