sql >> Databáze >  >> RDS >> Mysql

MySQL součet, počítat se skupinou podle a spojení

Váš první pokus byl opravdu blízko. Ale každý post_id byl násoben počtem shod ve insights , takže musíte použít 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;

Případně můžete seskupit pomocí dílčího dotazu, který kombinuje všechny statistiky pro stejný příspěvek:

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. Určení umístění příslušného souboru tnsnames.ora

  2. Vnitřní spojení SQLite

  3. Vyberte bez klauzule FROM v Oracle

  4. Doctrine2 ORM vyberte pro aktualizaci