sql >> Databasteknik >  >> RDS >> Mysql

MySQL summa, räkna med grupp efter och går med

Ditt första försök var riktigt nära. Men varje post_id multiplicerades med antalet matchningar i insights , så du måste använda DISTINCT :

select type_name, count(distinct p.post_id), sum(likes), sum(comments)
from types t
left join posts p on t.type_id = p.post_type
left join insights i on p.post_id = i.post_id
group by type_name;

Alternativt kan du gruppera med en underfråga som kombinerar alla insikter för samma inlägg:

select type_name, count(*), sum(likes), sum(comments)
from types t
left join posts p on t.type_id = p.post_type
left join (select post_id, sum(likes) likes, sum(comments) comments
           from insights
           group by post_id) i on p.post_id = i.post_id
group by type_name;

FIDDLE



  1. Fel vid utskrift av REFCURSOR-variabel som OUT-parameter i proceduren i Oracle 11g

  2. Bifoga ett innehållsdokument till ett anpassat Salesforce-objekt

  3. MariaDB ROW_COUNT() Förklarad

  4. MySQL; Bästa datatypen för stora antal