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

Cách tính tổng các giá trị trùng lặp từ bảng mysql

SELECT  uid 
     ,  date 
     , SUM(USD) AS USD 
     ,  Ref_Nr  
  FROM my_table
 GROUP 
    BY `date`, Ref_Nr, uid;

Trong trường hợp này, bạn phải có Ref_Nr trong nhóm bằng để có được kết quả mong muốn. uid, dựa trên dữ liệu mẫu, không cần thiết; nhưng điều khôn ngoan là luôn nhóm theo các trường không được tổng hợp từ vùng chọn trong nhóm theo. Lý do duy nhất điều này hoạt động trong mySQL là vì chúng mở rộng nhóm của ; hầu hết các RDBMS khác sẽ gây ra lỗi về các trường không được tổng hợp bị thiếu trong nhóm bởi. Trong phiên bản 5.7.5 và cao hơn, tính năng này bị tắt theo mặc định nếu được bật theo mặc định trước đó.

Về lý do tại sao cần ref_nr trong nhóm bằng cách:

MySQL engine tin rằng bạn chỉ muốn nhóm theo ngày. Vì vậy, tất cả các ref_NR được tổng hợp lại với nhau và hệ thống chỉ cần chọn một mỗi ngày để hiển thị; tương tự cho uid; nhưng vì chúng đều giống nhau; bạn không quan tâm. Đây là trường hợp với ref_nr.

Vì vậy, để giải quyết vấn đề, chỉ cần thêm ref_nr vào nhóm bằng cách thêm UID . Vì vậy, tốt hơn là từ nhóm theo tất cả các cột không được tổng hợp từ lựa chọn vào nhóm theo.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bạn của một người bạn trong PHP / MySQL?

  2. Duyệt cây chung (vô hạn) theo cách tìm kiếm theo chiều rộng-ưu tiên

  3. mysql - tạo ra một cơ chế tương tự như các chuỗi của Oracle

  4. Cách sử dụng nhóm kết nối với java, MySQL và Tomcat 6

  5. Nhiều truy vấn UNION không hoạt động