每个用户的有效事务数

vwkv1x7d  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(231)

我需要得到一份客户名单,他们在两个日期之间进行了一定数量的有效交易。

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,它返回每个用户的事务量,但也包含无效和超出范围的事务。
案件循环不是应该在计数中这样工作吗?
只计算事务而不合并两个表是不是更好?
(使用mysql)

3okqufwl

3okqufwl1#

我想这就是你想要的问题:

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() 从第二张table开始数。如果没有匹配项,则计数为 0 .
LEFT JOIN 仅当 min_transactions 永远是 0 .

相关问题