我有一个部分看起来像的表:
CustomerID — the key
Employee — the employee that signed up the customer
StartDate — the date someone became a customer
Status — the status of the customer, represented by an integer.
有一个整数,-5,这是“坏”,另外4个整数是“好”的不同阶段。如果他们被证明是欺诈性的,他们会得到-5。
我想要一个返回类似于:
的查询Employee | FRAUDULENT | NOT FRAUDULENT | TOTAL CUSTOMERS
-------------------------------------------------------------
mshreck 100 37 137
fwmurnau 27 10 37
因此,每一行包含一个特定startDate之后的记录计数,这些记录已被标记为欺诈(具有值-2),而不是欺诈性(除了-2之外的任何一个),两者相同。我希望每个员工都有一排。
现在,我必须运行两个查询并使用Excel将它们连接在一起。我没有在桌子上使用内部连接,但这感觉就像是一个可能的解决方案。
非常感谢任何帮助。
答案 0 :(得分:1)
SELECT Employee,
SUM(CASE WHEN Status = -2 THEN 1 END) AS FRAUDULENT
SUM(CASE WHEN Status <> -2 THEN 1 END) AS NOT_FRAUDULENT
COUNT(*) AS TOTAL_CUSTOMERS
FROM MyTable
WHERE StartDate >= :mydate
GROUP BY Employee;
答案 1 :(得分:0)
不,你不需要自己加入,只需使用count()中的sum()进行一些调整来得到数字:
select employee, sum(if(status=-5,1,0)) as fraudulent, sum(if(status<>-5,1,0)) as notfraudulent, count(*) as total
from table group by employee
where stardate>...