Postgresql Multiple counts for one table

you can use case in this case –

SELECT type, 
       sum(case when place="home" then 1 else 0 end) as Home,
       sum(case when  place="school" then 1 else 0 end) as school,
       sum(case when  place="work" then 1 else 0 end) as work,
       sum(case when  place="cafe" then 1 else 0 end) as cafe,
       sum(case when  place="friends" then 1 else 0 end) as friends,
       sum(case when  place="mall" then 1 else 0 end) as mall
  from reports
 group by type

It should solve your problem

@S T Mohammed,
To get such type we can simply use using after group or where condition in outer query, as below –

select type, Home, school, work, cafe, friends, mall from (
SELECT type, 
       sum(case when place="home" then 1 else 0 end) as Home,
       sum(case when  place="school" then 1 else 0 end) as school,
       sum(case when  place="work" then 1 else 0 end) as work,
       sum(case when  place="cafe" then 1 else 0 end) as cafe,
       sum(case when  place="friends" then 1 else 0 end) as friends,
       sum(case when  place="mall" then 1 else 0 end) as mall
  from reports
 group by type
 )
 where home >0 and School >0 and Work >0 and cafe>0 and friends>0 and mall>0

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)