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

MySQL - Trừ giá trị từ hàng trước, nhóm theo

Làm việc với các biến MySQL rất tuyệt, nó giống như các phép gán biến chương trình nội tuyến. Đầu tiên, mệnh đề FROM "khai báo" các biến @ cho bạn, mặc định là trống. Sau đó, truy vấn các bản ghi theo thứ tự dự kiến ​​mà bạn muốn. Nó thực hiện một lần chuyển qua dữ liệu thay vì thông qua các truy vấn con lặp đi lặp lại có thể tốn nhiều thời gian.

Đối với mỗi hàng đã đọc, hãy so sánh @lastSN với SN của bản ghi hiện tại. Nếu khác nhau, luôn trả về 0. Nếu giống nhau, hãy tính chênh lệch đơn giản. Chỉ SAU KHI quá trình so sánh hoàn tất, hãy đặt @lastSN và @lastValue bằng giá trị của bản ghi hiện tại để so sánh bản ghi tiếp theo.

select
      EL.SN,
      EL.Date,
      EL.Value, --remove duplicate alias
      if( @lastSN = EL.SN, EL.Value - @lastValue, 0000.00 ) as Consumption,
      @lastSN := EL.SN,
      @lastValue := EL.Value
   from
      EnergyLog EL,
      ( select @lastSN := 0,
               @lastValue := 0 ) SQLVars
   order by
      EL.SN,
      EL.Date


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tên cột và bảng có phân biệt chữ hoa chữ thường trong MySQL không?

  2. Điều chỉnh hiệu suất truy vấn MySQL

  3. 2017 @ Somenines:Kỷ niệm những câu chuyện của khách hàng của chúng tôi

  4. Các câu lệnh được chuẩn bị sẵn trong MySQL với danh sách biến kích thước có thể thay đổi

  5. Bật kết nối MySQL từ xa:LỖI 1045 (28000):Quyền truy cập bị từ chối đối với người dùng