Sql 根据销售数量为销售的产品创建销售排名表
我有BQ中的销售数据,其中包含以下列-Sql 根据销售数量为销售的产品创建销售排名表,sql,google-bigquery,Sql,Google Bigquery,我有BQ中的销售数据,其中包含以下列- Customer Id | ItemID | Order_Qty | Order_Date 我想根据商品的总销售量创建一个销售排名表 销售物品最大数量的最高等级 例如-销售总量为30的abc项目应排在第一位,销售总量为20的XYZ项目应排在第二位,以此类推 在生成的表中,我需要以下列 ItemId | Total Quantity | Rank 以下是我迄今为止在遗留SQL格式中的尝试- select ItemId , RANK() o
Customer Id | ItemID | Order_Qty | Order_Date
我想根据商品的总销售量创建一个销售排名表
销售物品最大数量的最高等级
例如-销售总量为30的abc项目应排在第一位,销售总量为20的XYZ项目应排在第二位,以此类推
在生成的表中,我需要以下列
ItemId | Total Quantity | Rank
以下是我迄今为止在遗留SQL格式中的尝试-
select ItemId ,
RANK() over (partition by ItemId order by Qty desc) as salesrank
from (SELECT ItemId, sum(order_qty) as Qty
FROM sales
group by 1
)
出于某种原因,所有的销售排名都是1我推测您希望通过
ean
获得排名。如果是:
SELECT ean, SUM(order_qty) as Qty,
RANK() OVER (ORDER BY SUM(order_qty) DESC) as rnk
FROM sales
GROUP BY ean;
在传统SQL中,这可能是:
SELECT ean, SUM(order_qty) as Qty,
RANK() OVER (ORDER BY qty DESC) as rnk
FROM sales
GROUP BY ean
我推测您希望通过
ean
获得排名。如果是:
SELECT ean, SUM(order_qty) as Qty,
RANK() OVER (ORDER BY SUM(order_qty) DESC) as rnk
FROM sales
GROUP BY ean;
在传统SQL中,这可能是:
SELECT ean, SUM(order_qty) as Qty,
RANK() OVER (ORDER BY qty DESC) as rnk
FROM sales
GROUP BY ean
下面是BigQuery标准SQL
#standardSQL
SELECT
ItemID, Total_Quantity,
RANK() OVER(ORDER BY Total_Quantity DESC) AS rnk
FROM (
SELECT ItemID, SUM(Order_Qty) AS Total_Quantity
FROM sales
GROUP BY ItemID
)
-- ORDER BY rnk
下面是BigQuery标准SQL
#standardSQL
SELECT
ItemID, Total_Quantity,
RANK() OVER(ORDER BY Total_Quantity DESC) AS rnk
FROM (
SELECT ItemID, SUM(Order_Qty) AS Total_Quantity
FROM sales
GROUP BY ItemID
)
-- ORDER BY rnk
您的查询应该会失败,因为
itemId
不在子查询中。我刚刚编辑了查询。谢谢您的查询应该会失败,因为子查询中没有itemId
。我刚刚编辑了查询。谢谢,我已经尝试了这个查询,但是失败了。在BQ中,它抛出错误-在分析表达式中,ORDERBY必须引用命名列。发现SUMI已尝试此查询,但失败。在BQ中,它抛出错误-在分析表达式中,ORDERBY必须引用命名列。现款