用于计算分组值的SQL列
问题描述:
我正在查看作业表中由customer_id分组的许多作业是否被批准。如果approval_date不为空,则确定审批。因此,如果总共有12份工作,我想表明7份已被批准。如果批准日期为空,则该作业未获批准。下面用于计算分组值的SQL列
select
c.customer_name
,count(*) as counts
, -- i want to add a column here that tells me which jobs have (j.approval_date is not null)
from job j
join customer c on j.customer_id = c.customer_id
group by c.customer_name
的代码提供了语法错误:
,count(approval_date is not null) as is_approved
答
你可以使用条件的总和:
select
c.customer_name
,count(*) as counts
,SUM(CASE WHEN j.approval_date is not null THEN 1 ELSE 0 END)
from job j
join customer c on j.customer_id = c.customer_id
group by c.customer_name;
计数(approval_date)? –
不完全 - 批准日期不能为空,才能将工作视为已批准。 –
'COUNT(表达式)'只能计算值,NULL就像[这里]讨论的一样(https://stackoverflow.com/questions/26368794/why-arent-nulls-counted-in-countcolumnname)。 – HABO