Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL sum, đếm với nhóm theo và tham gia

Nỗ lực đầu tiên của bạn đã thực sự thành công. Nhưng mỗi post_id được nhân với số lượng kết quả phù hợp trong insights , vì vậy bạn cần sử dụng 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;

Ngoài ra, bạn có thể nhóm với một truy vấn con kết hợp tất cả thông tin chi tiết cho cùng một bài đăng:

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. Lỗi nghiêm trọng:Gọi đến hàm không xác định mysql_connect_errno () trong

  2. ClassNotFoundException:com.mysql.jdbc.GoogleDriver

  3. Giới thiệu về các kiểu dữ liệu SQL

  4. Thay đổi công cụ bảng trong MySQL

  5. mysql PDO và chèn SQL động thủ tục được lưu trữ