Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL сума, броене с група по и присъединява

Първият ти опит беше много близо. Но всеки post_id се умножава по броя на съвпаденията в insights , така че трябва да използвате 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;

Като алтернатива можете да групирате с подзаявка, която комбинира всички прозрения за една и съща публикация:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подигравателно PDO с phpunit

  2. Мога ли да накарам електронните таблици на Google Drive да действат като MySQL база данни?

  3. ГРЕШКА:Грешка 1005:Не може да се създаде таблица (errno:121)

  4. MySQL сортиране по стойност на масива

  5. Какво е значението на въпросителния знак в MySQL в колона WHERE =??