我有这张桌子:
我需要:
其中:
完成包含相同_legajo and _count > 0
Zero包含same_legajo and _count = 0
跟踪包含相同_legajo
,some records with _count 0 and some with _count >
我的表是20k记录
我正在处理PHP
和MySQL
一些想法?
答案 0 :(得分:2)
您可以先为MIN
选择MAX
和_legajo
:
SELECT _legajo, MIN(_count), MAX(_count)
FROM signups
GROUP BY _legajo;
如果MAX
为零,那么它自然属于zero
类别。如果MIN
大于零,那么它属于complete
类别(MAX
自然大于零)。如果MIN
为零并且MAX
不是,则它位于track
。
然后您可以使用SUM
来确定具有以下条件的计数:
SELECT
SUM(CASE WHEN min>0 THEN 1 ELSE 0 END) as complete,
SUM(CASE WHEN max=0 THEN 1 ELSE 0 END) as zero,
SUM(CASE WHEN min=0 AND max>0 THEN 1 ELSE 0 END) as track
FROM (SELECT _legajo, MIN(_count), MAX(_count)
FROM signups
GROUP BY _legajo) a;