【问题标题】:Calculate top two performing product categories from Sales data根据销售数据计算表现最好的两个产品类别
【发布时间】:2018-04-25 04:24:44
【问题描述】:

我正在尝试为每个客户建立前 2 个表现最佳的产品类别的 KPI。 我有以下相关列的销售数据 - customerid, product, product_category, order_qty, product_amt, order_date

我在 BQ 中使用旧版 SQL 语法。

【问题讨论】:

  • 产品类别在哪里?
  • 我刚刚编辑了这个问题,感谢@GordonLinoff 指出这一点

标签: sql google-bigquery


【解决方案1】:

这是一个可能的解决方案...

SELECT
  customer_id,
  product_category,
  order_qty
FROM (
  SELECT
    customerid, 
    product_category, 
    SUM(order_qty) AS order_qty,
    ROW_NUMBER() OVER(PARTITION BY customerid ORDER BY order_qty DESC) AS rn
  FROM
    [project:dataset.table] 
  GROUP BY
    1, 2
)
WHERE
  rn <= 2
ORDER BY
  1, 3 DESC

【讨论】:

  • 感谢您的回答,我想出了类似的问题。但我遇到了一个错误 - 查询执行期间资源超出:无法在分配的内存中执行查询。 ORDER BY 运算符使用了太多内存..(错误代码:resourcesExceeded)我的表包含 1.5 亿行,大小为 15.8 GB。我只能通过限制看到结果,这不是完整的输出
  • 您能否尝试摆脱外部 order by 子句(不是 PARTITION BY 子句中的那个)。 BigQuery 文档也不鼓励在大型数据集上使用 ORDER BY
  • 在您的解决方案中,我们如何创建 2 列,当 rn=1 时为 category_1,当 rn=2 时为 category_2。
猜你喜欢
  • 2018-06-27
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多