这是在 MSSQL/Azure SQL 上。
我有以下销售表:
Line_Item_ID | Sales_Order_ID | 库存单位 |
---|---|---|
1 | 1 | 4 |
2 | 1 | 1 |
3 | 2 | 4 |
4 | 3 | 1 |
5 | 3 | 7 |
6 | 3 | 4 |
7 | 4 | 4 |
8 | 5 | 1 |
9 | 5 | 8 |
我正在尝试获取显示每个 SKU、订单总数(非常简单)和包含该 SKU 的订单的订单项总数的输出。
所以对于第一部分:
select SKU, count(distinct(sales_order_id) as "Order_Count" from Table T
group by SKU
很简单,但是第二部分是我的头脑 -
所需的输出如下所示:
库存单位 | Order_Count | Line_Item_Count |
---|---|---|
1 | 3 | 7 |
4 | 4 | 7 |
7 | 1 | 3 |
8 | 1 | 2 |
如何计算每个包含 SKU 的订单的 Line_item_ID 总数?理想情况下,在单个查询中没有大量疯狂的连接或子查询。
您可以在CTE或子查询中使用带有该函数的窗口函数来获取每个的总计数,甚至只是在该点单独分组,然后将其重新加入到现有查询中,并在其顶部获取总数每个都像这样:
COUNT()
Line_Item_ID
Sales_Order_Id
SUM()
Line_Item_ID
SKU
根据需要,随意重命名和重新格式化我使用的语法的大小写。
根据可用的索引和数据大小,您可能会发现这很有用