我有2个不同的日期字段,1当案件被创建,另一个当案件完成。我试图计算2023年的总病例和总完成病例。
每当我运行查询并设置where字段时,两列都返回相同的数字。
SELECT COUNT(*) AS cases,
COUNT(IF(YEAR(tbl_lead.CompDate) = '2023', 1, NULL)) AS Completed,
tbl_lead.LeadSource
FROM tbl_lead
WHERE YEAR(tbl_lead.CompDate) = '2023'
GROUP BY tbl_lead.LeadSource
我想我想做的是把2023年的所有记录都算作案例,然后计算其中有多少在2023年完成。这不可能吗?
它应该输出为:
| 案例展示|已完成|LeadSource|
| - -----|- -----|- -----|
| 一千|五百|谷歌|
| 二千年|七百|Facebook|
而它目前的输出是:
| 案例展示|已完成|LeadSource|
| - -----|- -----|- -----|
| 五百|五百|谷歌|
| 七百|七百|Facebook|
谢谢你
3条答案
按热度按时间xoshrz7s1#
您当前的查询仅引用CompDate,但在您的问题中引用了两个不同的日期列。您正在寻找的页面:
33qvvth12#
使用这个
where
条件,查询中的所有行都是在2023年完成的案例(即,匹配if
中的条件),因此两个count
将返回相同的结果。删除where
子句,您应该可以:ztmd8pv53#
我认为有一个列(让我们称之为is_completed)指示案例是否完成,在这种情况下,尝试以下操作: