我試圖找到一個查詢,將給我在同一個月與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)提供期望的結果。 –
我已經提出了建議的編輯 –