今年但前 2 年未购买的非活跃客户数量(季度)。
到目前为止我已经计算如下。
SELECT x.dept,
COUNT(CASE WHEN QUARTER(x.min_cd) = '1' THEN 1 END) AS Q1,
COUNT(CASE WHEN QUARTER(x.min_cd) = '2' THEN 1 END) AS Q2,
COUNT(CASE WHEN QUARTER(x.min_cd) = '3' THEN 1 END) AS Q3,
COUNT(CASE WHEN QUARTER(x.min_cd) = '4' THEN 1 END) AS Q4
FROM (
SELECT cs.department_id AS dept, MIN(ccals.ci_date) as min_cd
FROM commision_calculation ccals
LEFT JOIN customer cs ON cs.id=ccals.cusotmer_id
WHERE ccals.ci_date >= DATE_SUB(CURDATE(),INTERVAL 2 YEAR)
GROUP BY dept
AS x
GROUP BY x.dept,QUARTER(x.min_cd)
Dept Q1 Q2 Q3 Q4
A 2 1 0 5
B 1 2 3 0
C 4 2 1 1
我已经从 GROUP BY 子句中删除了放错位置的 AS x ,并更正了 GROUP BY 子句以直接使用 cs.department_id
SELECT x.dept,
COUNT(CASE WHEN QUARTER(x.min_cd) = '1' THEN 1 END) AS Q1,
COUNT(CASE WHEN QUARTER(x.min_cd) = '2' THEN 1 END) AS Q2,
COUNT(CASE WHEN QUARTER(x.min_cd) = '3' THEN 1 END) AS Q3,
COUNT(CASE WHEN QUARTER(x.min_cd) = '4' THEN 1 END) AS Q4
FROM (
SELECT cs.department_id AS dept, MIN(ccals.ci_date) as min_cd
FROM commision_calculation ccals
LEFT JOIN customer cs ON cs.id = ccals.customer_id
WHERE ccals.ci_date >= DATE_SUB(CURDATE(), INTERVAL 2 YEAR)
GROUP BY cs.department_id
) AS x
GROUP BY x.dept, QUARTER(x.min_cd);