簡體   English   中英

SQL對每個用戶的有效事務計數

[英]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_transactions0時才需要LEFT JOIN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM