我需要得到一份客户名单,他们在两个日期之间进行了一定数量的有效交易。
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)
1条答案
按热度按时间3okqufwl1#
我想这就是你想要的问题:
笔记:
表中第二个表的条件
LEFT JOIN
通常属于ON
条款。对日期和字符串常量使用单引号。双引号可用于转义标识符。
这个
count()
从第二张table开始数。如果没有匹配项,则计数为0
.一
LEFT JOIN
仅当min_transactions
永远是0
.