2017-09-25 74 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;