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

Truy vấn SQL cho trung bình cuộn trong 7 ngày trong SQL Server

Hãy thử:

select x.*,
       avg(dailyusage) over(partition by productid order by productid, date rows between 6 preceding and current row) as rolling_avg
  from (select productid, date, sum(usagecount) as dailyusage
          from tbl
         group by productid, date) x

Chơi đùa:

http://sqlfiddle.com/#!6/f674a7/4/0

Thay thế "avg (dailusage) over ...." bằng sum (thay vì avg) nếu những gì bạn thực sự muốn là tổng cho tuần qua. Trong tiêu đề của bạn, bạn nói rằng bạn muốn trung bình nhưng sau đó bạn nói rằng bạn muốn tổng. Truy vấn phải giống với truy vấn khác, vì vậy hãy sử dụng bất kỳ truy vấn nào bạn thực sự muốn.

Như đã được Gordon chỉ ra, đây về cơ bản là giá trị trung bình của 6 ngày đã sử dụng sản phẩm trước đây, có thể nhiều hơn chỉ 6 ngày qua nếu có những ngày không có bất kỳ hàng nào cho sản phẩm đó trên bảng vì nó không được sử dụng t được sử dụng ở tất cả. Để giải quyết vấn đề đó, bạn có thể sử dụng bảng ngày tháng và bảng sản phẩm của mình.



  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ách khôi phục niềm tin trong ràng buộc khóa ngoại trong SQL Server (Ví dụ T-SQL)

  2. Nhiều câu lệnh INSERT so với một câu lệnh INSERT với nhiều GIÁ TRỊ

  3. Truy vấn con của SQL Server trả về nhiều hơn 1 giá trị. Điều này không được phép khi truy vấn con theo sau =,! =, <, <=,>,> =

  4. Thoát một chuỗi trong SQL Server để an toàn khi sử dụng trong biểu thức LIKE

  5. 7 sự thật về từ đồng nghĩa SQL Server bạn nên biết