我必须显示具有不同条件的两个不同计数,第一列显示任务数(COUNT(PROJECTWORKPLAN.TASKS))
,另一个是我获得逻辑但不知道如何键入的延迟任务数言。
PROJECTWORKPLAN表有这些列,可以帮助确定延迟
tasks:
SDate - Start Date
ASDate - Actual Start Date
EDate - End Date
AEDate - Actual End Date
答案 0 :(得分:3)
将聚合函数SUM
与IF
表达式结合使用来计算子计数。
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 ...