选择同月购买两个特定类别中至少一个的客户数

时间:2016-04-30 15:08:33

标签: mysql join

我正在尝试撰写查询,以计算在2014年同一月内从order_type=0order_type=1购买至少一个的客户

我有两张桌子。

订单表格包含:

  • ORDER_ID
  • CUSTOMER_ID
  • aquisition_date

orders_category 表格:

  • ORDER_ID
  • order_type(可能有0,1,2,3,5,8等订单的类型)

我尝试了这个查询,但它不起作用,我知道它不完整,我错过了月份条件!

Select count(user_id) From order
join orders_category
 on order.order_id = orders_category.order_id
Where (order_type=0 or order_type=1)
and extract (year from order.aquisition_date)=2014
group by user_id
having count (case when type_id=0 then null else null end) > 0
and count (case when type_id=1 then null else null end) > 0;

我不知道如何找到来自order_type=0&的至少1个订单的用户在同一个月内有order_type=1的1个订单。

1 个答案:

答案 0 :(得分:2)

您可以根据已有的内容使用此查询。不过,我建议您将表order的名称更改为orders,因为order是保留字:

select count(distinct user_id)
from   (
    select     user_id, month(aquisition_date) 
    from       orders
    inner join order_category
            on orders.order_id = order_category.order_id
    where      order_type in (0, 1)
    and        year(aquisition_date) = 2014
    group by   user_id, month(aquisition_date)
    having     count(distinct order_type) = 2
) as base

SQL fiddle

我也在子选择中选择了月份,因为在分析过程中查看该查询的输出会很有趣。