我怎么能用DATA BY和MySQL中的条件来计算

时间:2016-08-27 16:43:33

标签: php mysql

我有这张桌子:

Signups group by _legajo

我需要:

Indexes

其中:

  • 完成包含相同_legajo and _count > 0

  • 的所有记录
  • Zero包含same_legajo and _count = 0

  • 的所有记录
  • 跟踪包含相同_legajosome records with _count 0 and some with _count >

  • 的所有记录

我的表是20k记录

我正在处理PHPMySQL

一些想法?

1 个答案:

答案 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;