SQL ServerのMyTableには、_TimeStamp、Column1、Column2、およびColumn3が含まれています。これらの値は次のとおりです。
_TimeStamp Column1 Column2 Column3
'2010-10-11 15:55:25.40' 10 3 0.5
'2010-10-11 15:55:25.50' 20 9 0.7
'2010-10-11 15:55:25.60' 15 2 1.3
'2010-10-11 15:55:25.70' 17 8 2.7
'2010-10-11 15:55:25.80' 42 6 3.6
'2010-10-11 15:55:25.90' 14 2 0.4
4 * Column1 * Column2*Column3の中央値を見つけたいと思います。各行の積は次の
とおりです。605041561468.8
3628.8
44.8
エントリ
の数が偶数であるため、中央値は2つの「中間」エントリ(156と504)の平均、つまり330
です
。選択した時間範囲内の値の中央値であり、ソリューションは私のものではないデータベースを変更できません。同様のクエリを編集して以下に示すクエリを取得しましたが、列名が無効であるため失敗します。助言がありますか?
SELECT
AVG(4*Column1*Column2*Column3)
FROM
(
SELECT
4*Column1*Column2*Column3,
ROW_NUMBER() OVER (
ORDER BY 4*Column1*Column2*Column3 ASC, _TimeStamp ASC) AS RowAsc,
ROW_NUMBER() OVER (
ORDER BY 4*Column1*Column2*Column3 DESC, _TimeStamp DESC) AS RowDesc
FROM MyTable WHERE
_TimeStamp BETWEEN '2010-10-11 15:55:25.40' AND '2010-10-11 15:55:25.90'
) x
WHERE
RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)