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

Trung bình động / Trung bình lăn

Đây là SQL Fiddle điều đó thể hiện truy vấn sau:

WITH TempS as 
(
  SELECT s.SNo, s.value, 
  ROW_NUMBER() OVER (ORDER BY s.SNo) AS RowNumber
  FROM MyTable AS s
)
SELECT m.SNo, m.value,
(
  SELECT SUM(s.value) 
  FROM TempS AS s
  WHERE RowNumber >= m.RowNumber
  AND RowNumber <= m.RowNumber + 2
) AS Sum3InRow
FROM TempS AS m

Trong câu hỏi của bạn, bạn đã yêu cầu tính tổng 3 giá trị liên tiếp. Bạn đã sửa đổi câu hỏi của mình cho biết số lượng bản ghi liên tiếp bạn cần tính tổng có thể thay đổi. Trong truy vấn trên, bạn chỉ cần thay đổi m.RowNumber + 2 với những gì bạn cần.

Vì vậy, nếu bạn cần 60, thì hãy sử dụng

m.RowNumber + 59

Như bạn có thể thấy, nó rất linh hoạt vì bạn chỉ phải thay đổi một số.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn 2 triệu hàng vào SQL Server nhanh chóng

  2. SQL LocalDB so với SQL Server CE

  3. UNION ALL so với OR điều kiện trong truy vấn máy chủ sql

  4. DATEDIFF ở định dạng HH:MM:SS

  5. Làm thế nào để nối nhiều hàng?