2017-09-25 85 views
2

我正在查看作业表中由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 
+1

计数(approval_date)? –

+0

不完全 - 批准日期不能为空,才能将工作视为已批准。 –

+0

'COUNT(表达式)'只能计算值,NULL就像[这里]讨论的一样(https://stackoverflow.com/questions/26368794/why-arent-nulls-counted-in-countcolumnname)。 – HABO

回答

2

你可以使用条件的总和:

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;