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

Cú pháp chính xác để phân vùng trong SQL là gì

Tổng tích lũy sử dụng UDV:

select
dateOfCheckup,
duration,

-- use intermediate variable @cur_dur for not calculate this value twice
@cur_dur := ((case when duration like '% hour%' then substring_index(duration, ' hour', 1) * 60 else 0 end) +
(case when duration like '%min%' then substring_index(substring_index(duration, ' min', 1), ' ', -1) + 0 else 0 end)) as minutes,

-- check does current @year_month is equal to previous, continue or restart @cum_sum
CASE WHEN @year_month = date_format(dateOfCheckup, '%Y-%m')
     THEN @cum_sum := @cum_sum + @cur_dur
     ELSE @cum_sum := @cur_dur
     END total,

-- store current @year_month for to use with next row
@year_month := date_format(dateOfCheckup, '%Y-%m') monthOfCheckup

from patient, 

-- initialize variables which will be used
(SELECT @year_month:='', @cum_sum:=0, @cur_dur:=0) variables

-- the rows must be processed in definite order
ORDER BY dateOfCheckup

fiddle

Thứ tự các cột đầu ra là rất quan trọng (các phép tính trong các cột đầu ra trong một hàng được thực hiện đúng theo thứ tự mà chúng được viết). Nhưng không quan trọng nếu ví dụ này được sử dụng làm truy vấn con hay dữ liệu đầu ra được truy cập bằng tên cột.




  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ìm kiếm đang hiển thị tất cả các sản phẩm

  2. mysql GROUP_CONCAT DISTINCT nhiều cột

  3. Cách nhập / khôi phục bảng MySql bằng PHP

  4. Hibernate Không thể thêm hoặc cập nhật hàng con:ràng buộc khóa ngoại không thành công

  5. Làm cách nào tôi có thể sử dụng Conda để cài đặt MySQLdb?