sql >> Database >  >> RDS >> Mysql

MySQL-som, tellen met groeperen op en meedoen

Je eerste poging was heel dichtbij. Maar elke post_id werd vermenigvuldigd met het aantal overeenkomsten in insights , dus je moet DISTINCT . gebruiken :

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;

U kunt ook groeperen met een subquery die alle inzichten voor hetzelfde bericht combineert:

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. Installeer Oracle Client vanaf de opdrachtregel zonder tussenkomst van de gebruiker

  2. Bepalen of MySQL-tabelindex bestaat voordat u deze maakt

  3. PostgreSQL Machtigingen van pg_catalog-tabellen intrekken

  4. COT() Voorbeelden in SQL Server