Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Suma MySQL, liczenie z grupowaniem według i łączeniami

Twoja pierwsza próba była bardzo bliska. Ale każdy post_id był mnożony przez liczbę dopasowań w insights , więc musisz użyć 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;

Alternatywnie możesz pogrupować za pomocą podzapytania, które łączy wszystkie spostrzeżenia dla tego samego postu:

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;

SKRZYPKA



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj mysqldump do tworzenia kopii zapasowych MySQL lub MariaDB

  2. Dodanie nowej kolumny SQL z wartością domyślną

  3. Web2py – migracja z SQLite do MySQL

  4. Jak eksportować bazy danych za pomocą wiersza poleceń?

  5. Wstaw/aktualizuj funkcję pomocniczą za pomocą PDO