我有一个数据库表,以下列方式存储销售订单:
order_id | sku_1 | sku_2 | order_date
-------------------------------------
1 | FC-123 | FC-597 | 2016-10-23
2 | FC-097 | FC-123 | 2016-10-23
3 | FC-123 | FC-123 | 2016-10-23
我想计算每天销售的特定SKU的数量。如您所见,每个销售订单可以出现一次SKU,这给我带来了麻烦。
我已经尝试计算SKU存在的行数,但如果SKU在一个订单上多次出现,这显然会很短。
有人可以帮忙吗?我确信有一个解决方案。实际的表格要复杂得多,但我相信这个例子应该说明我遇到的困难。
谢谢!
答案 0 :(得分:0)
SELECT order_date,COUNT( sku ) AS count_of_skus_per_order_day
FROM
(
SELECT order_date,sku_1 AS sku
FROM sales_orders
UNION
SELECT order_date,sku_2 AS sku
FROM sales_orders
) z;
答案 1 :(得分:0)
如何检查每列?这是一个“棘手”的方法:
select count(*) + sum(case when sku_1 = sku_2 then 1 else 0 end)
from orders o
where 'FC-123' in (sku_1, sku_2) and
order_date = $date;
一种更冗长的方法是:
select (sum(case when sku_1 = 'FC-123' then 1 else 0 end) +
sum(case when sku_2 = 'FC-123' then 1 else 0 end)
)
from orders o
where 'FC-123' in (sku_1, sku_2) and
order_date = $date;