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

kết quả truy vấn tổng hợp mysql với GROUP BY

PIVOT ing không phải là dễ dàng (cũng không tốt đẹp) để làm. Tôi thích sử dụng CASE :

SELECT d.data_timestamp
     , SUM( CASE WHEN data_id =  1 THEN data_value ELSE 0 END ) AS 'input_1'
     , SUM( CASE WHEN data_id =  2 THEN data_value ELSE 0 END ) AS 'input_2'
     ...
     , SUM( CASE WHEN data_id = 20 THEN data_value ELSE 0 END ) AS 'input_20'
FROM data 
GROUP BY data_timestamp
ORDER BY data_timestamp ASC

nhưng IF cũng hoạt động trong MySQL:

SELECT d.data_timestamp
     , SUM( IF(data_id =  1, data_value, 0) ) AS 'input_1'
     , SUM( IF(data_id =  2, data_value, 0) ) AS 'input_2'
     ...
     , SUM( IF(data_id = 20, data_value, 0) ) AS 'input_20'
FROM data 
GROUP BY data_timestamp
ORDER BY data_timestamp ASC

Ngoài ra, bạn có thể sử dụng JOIN 20 cấp :

SELECT d.data_timestamp
     , d01.data_value AS 'input_1'
     , d02.data_value AS 'input_2'
     ...
     , d20.data_value AS 'input_20'
FROM
  ( SELECT DISTINCT d.data_timestamp
    FROM data
  ) AS d 
  LEFT JOIN data AS d01
    ON d01.data_timestamp = d.data_timestamp
    AND d01.data_id =  1
  LEFT JOIN data AS d02
    ON d02.data_timestamp = d.data_timestamp
    AND d02.data_id =  2
  ...                                   --- 20 JOINs
  LEFT JOIN data AS d20
    ON d20.data_timestamp = d.data_timestamp
    AND d20.data_id = 20
ORDER BY d.data_timestamp ASC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các câu lệnh chuẩn bị cho MySQL

  2. PHP &mySQL:Năm 2038 Lỗi:Nó là gì? Làm thế nào để giải quyết nó?

  3. Làm cách nào để trích xuất hai chữ số liên tiếp từ một trường văn bản trong MySQL?

  4. Câu lệnh chọn MySQL với CASE hoặc IF ELSEIF? Không chắc chắn làm thế nào để nhận được kết quả

  5. Lưu trữ hình ảnh vào cơ sở dữ liệu blob; truy xuất từ ​​db vào Hộp ảnh