如何用不同的条件显示不同的计数?

时间:2014-03-01 10:29:15

标签: mysql sql count conditional-statements

我必须显示具有不同条件的两个不同计数,第一列显示任务数(COUNT(PROJECTWORKPLAN.TASKS)),另一个是我获得逻辑但不知道如何键入的延迟任务数言。

PROJECTWORKPLAN表有这些列,可以帮助确定延迟

tasks:
SDate - Start Date
ASDate - Actual Start Date
EDate - End Date
AEDate - Actual End Date

3 个答案:

答案 0 :(得分:3)

将聚合函数SUMIF表达式结合使用来计算子计数。

SELECT
    COUNT(1) total,
    SUM(IF(AEDate>EDate,1,0)) delayed
FROM ...

答案 1 :(得分:2)

我猜延迟将被定义为实际结束日期大于任务结束日期然后任务延迟,因此您可以使用count()执行所有任务,sum()使用延迟任务的情况< / p>

SELECT
COUNT(PROJECTWORKPLAN.TASKS) `all_tasks`,
SUM(CASE WHEN AEDate >EDate THEN 1 ELSE 0) `delayed_tasks`
FROM PROJECTWORKPLAN
GROUP BY PROJECTWORKPLAN.id

答案 2 :(得分:1)

此问题标记为“mysql”。虽然我喜欢case语句版本(因为它使用ANSI标准语法),但MySQL非常方便:它将布尔值视为整数。因此,“true”为1,“false”为0。所以你可以用更简单的语法:

来做到这一点
SELECT COUNT(*) total,
       SUM(AEDate > EDate) delayed
FROM ...