sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql Vícenásobné počty pro jednu tabulku

můžete použít case v tomto případě -

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

Mělo by to vyřešit váš problém

@ST Mohammed, K získání takového typu můžeme jednoduše použít using po group nebo where podmínku ve vnějším dotazu, jak je uvedeno níže -

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


  1. Příklad demonstrující zranitelnost SQL Injection a její prevence v Oracle

  2. Chyby objevující se v kódu mysqli a call_user_func_array()

  3. MySQL atomic insert-if-not-existuje se stabilním autoinkrementem

  4. Jak zvýšit čítač a vrátit hodnotu v MySQL