2009-10-12 20 views
7

Tôi có một yêu cầu để tính toán phạm vi di chuyển của một tải dữ liệu (ít nhất tôi nghĩ đây là những gì nó được gọi) trong SQL Server. Điều này sẽ được dễ dàng nếu tôi có thể sử dụng mảng, nhưng tôi hiểu điều này là không thể cho MS SQL, do đó, tự hỏi nếu có ai có một gợi ý.Tính toán phạm vi di chuyển trong SQL Server (không có mảng)

Để cung cấp cho bạn một ý tưởng về những gì tôi cần:

phép nói rằng tôi có những điều sau đây trong một bảng sql server:

1 
3 
2 
6 
3 

tôi cần phải nhận được sự khác biệt của mỗi người trong các con số (trong theo thứ tự), ví dụ:

|1-3|=2 
|3-2|=1 
|6-2|=4 
|3-6|=3 

Sau đó vuông này:

2^2=4 
1^2=1 
4^2=16 
3^2=9 

EDIT: Có lẽ đáng chú ý là BẠN KHÔNG vuông NÀY CHO Moving Average - tôi đã sai

Sau đó tổng hợp:

4+1+16+9=30 

Sau đó chia cho số các giá trị:

30/5=6 

Sau đó căn bậc hai này:

2.5(ish) 

EDIT: VÌ bạn arent bình phương CHÚNG, bạn arent SQROOTING CHÚNG HOẶC

Nếu ai chỉ có thể giúp tôi ra với bước đầu tiên, đó sẽ là tuyệt vời - Tôi có thể làm phần còn lại bản thân mình.

Một vài thứ khác để đưa vào tài khoản:
- Sử dụng thủ tục lưu trữ trong SQL Server
- Có khá nhiều dữ liệu (100s hay 1000s giá trị), và họ sẽ cần phải được calulated hàng ngày hoặc hàng tuần

Rất cám ơn trước.

~ Bob

+0

Một câu hỏi tốt đẹp. Tôi nghĩ rằng tôi sẽ làm cho bài đăng blog ngày hôm nay của tôi ra khỏi nó. – Quassnoi

Trả lời

7
WITH nums AS 
     (
     SELECT num, ROW_NUMBER() OVER (ORDER BY id) AS rn 
     FROM mytable 
     ) 
SELECT SQRT(AVG(POWER(tp.num - tf.num, 2))) 
FROM nums tp 
JOIN nums tf 
ON  tf.rn = tp.rn + 1 
Các vấn đề liên quan