[英]SQL Count valid Transactions per User
我需要獲取在兩個日期之間進行特定數量的有效交易的客戶列表。
SELECT
customer.customer_id,
COUNT(
CASE WHEN transaction.transaction_date>="2010-01-01"
THEN 1
ELSE NULL
END
) AS Total
FROM customer
LEFT JOIN transaction ON customer.customer_id = transaction.customer_id
GROUP BY customer.customer_id
HAVING (Total>=min_transactions AND Total<=max_transactions)
這不會返回任何東西。 通過刪除COUNT(..)中的CASE,它返回每個用戶的交易量,但是它還包含無效和超出范圍的交易。
CASE循環不是應該在COUNT中那樣工作嗎?
僅統計交易而不合並兩個表是更好的主意嗎?
(使用MySQL)
我認為這是您想要的查詢:
SELECT c.customer_id, COUNT(t.customer_id) as Total
FROM customer c LEFT JOIN
transaction t
ON c.customer_id = t.customer_id AND
t.transaction_date >= '2010-01-01'
GROUP BY c.customer_id
HAVING Total >= min_transactions AND Total <= max_transactions;
筆記:
LEFT JOIN
第二個表上的條件通常屬於ON
子句。 count()
從第二個表開始計數。 如果沒有匹配項,則計數將為0
。 min_transactions
為0
時才需要LEFT JOIN
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.