我试图找到一个查询,将给我在同一个月与2个不同实体进行交易的客户数量。换句话说,在同一个月内与company_a和company_b进行交易的customer_ids。以下是我迄今为止:SQL查询到组ID重叠(通过内部联接)按月
SELECT Extract(year FROM company_a_customers.transaction_date)
|| Extract(month FROM company_a_customers.transaction_date) AS
payment_month,
Count(UNIQUE(company_a_customers.customer_id))
FROM (SELECT *
FROM my_table
WHERE (merchant_name LIKE '%company_a%')) AS company_a_customers
INNER JOIN (SELECT *
FROM my_table
WHERE (merchant_name = 'company_b')) AS
company_b_customers
ON company_a_customers.customer_id =
company_b_customers.customer_id
GROUP BY Extract(year FROM company_a_customers.transaction_date)
|| Extract(month FROM company_a_customers.transaction_date)
的问题是,这是给我一个运行总计与A公司的交易在一个月按一个月基础上所有的客户谁也曾经与公司交易B.
如果我惠特尔下来到一个特定的月份,这显然给我正确的重叠,这是因为查询只获得ID的那个月:
SELECT Extract(year FROM company_a_customers.transaction_date)
|| Extract(month FROM company_a_customers.transaction_date) AS
payment_month,
Count(UNIQUE(company_a_customers.customer_id))
FROM (SELECT *
FROM my_table
WHERE (merchant_name LIKE '%company_a%')
AND transaction_date >= '2017-06-01'
AND transaction_date <= '2017-06-30') AS company_a_customers
INNER JOIN (SELECT *
FROM my_table
WHERE (merchant_name = 'company_b')
AND transaction_date >= '2017-06-01'
AND transaction_date <= '2017-06-30') AS
company_b_customers
ON company_a_customers.customer_id =
company_b_customers.customer_id
GROUP BY Extract(year FROM company_a_customers.transaction_date)
|| Extract(month FROM company_a_customers.transaction_date)
我怎样才能做到这一点的一个查询获得每月在特定月份内与两家公司进行交易的客户总数?
预期结果:输出第二个查询,但对于数据库中的每个月。换句话说:
2017年1月:XX,XXX重叠的客户2017年 2月:XX,XXX重叠的客户2017年 三月:XX,XXX重叠客户
非常感谢。
编辑你的问题。 (1)使用您正在使用的数据库进行标记。 (2)提供样本数据。 (3)提供期望的结果。 –
我已经提出了建议的编辑 –