2017-09-25 9 views
2

私は、job_idでグループ化されているジョブテーブル内のジョブのうち、いくつが承認されたかを表示したいと考えています。 approval_dateがnullでない場合、承認が決定されます。したがって、合計12のジョブがある場合は、たとえば7が承認されていることを示したいと思います。承認日がNULLの場合、ジョブは承認されません。グループ化された値を集計する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

- ジョブが承認されたものとみなされるためには、承認日をnullにすることはできません。 –

+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; 
関連する問題