sql >> Database teknologi >  >> RDS >> Mysql

MySQL sum, tæl med gruppe efter og joins

Dit første forsøg var tæt på. Men hver post_id blev ganget med antallet af match i insights , så du skal bruge 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 gruppere med en underforespørgsel, der kombinerer al indsigt for det samme indlæg:

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. MySQL:Når proceduren er gemt, er parameternavnet det samme som tabelkolonnenavnet

  2. 4 måder at kontrollere en kolonnes datatype i MySQL

  3. Sådan fjerner du en adgangskode fra en database i Access 2016

  4. Stærke referencemarkører med tabelbaseret postdatatype