计算销售订单中SKU的所有出现次数

时间:2016-11-03 20:11:35

标签: mysql sql

我有一个数据库表,以下列方式存储销售订单:

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在一个订单上多次出现,这显然会很短。

有人可以帮忙吗?我确信有一个解决方案。实际的表格要复杂得多,但我相信这个例子应该说明我遇到的困难。

谢谢!

2 个答案:

答案 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;