每10行T-SQL(AVG)

时间:2018-08-02 08:25:06

标签: tsql select average

我的T-SQL数据库中有此表:

enter image description here

在此查询中,我有以下示例记录:

enter image description here

现在我还有更多条目。

我有这个查询:

SELECT 'ECG' AS NOME,
        V.TIMESTAMP as ORA, 
        CAST(V.Valore AS DECIMAL(21,20)) AS VALORE, 
        row_number() over (order by V.TIMESTAMP) AS CONTEGGIO, 
        V.ID AS ID_VALORE
        FROM AA_V_CARTELLA_CLINICA_VALORI_ECG V
        ORDER BY V.TIMESTAMP asc

此查询提取所有数据,我想更改它以提取数据,但每10个值对列“ Valore”进行平均。可以做到吗?

2 个答案:

答案 0 :(得分:1)

@bircastri我希望我能很好地理解您,但我认为您非常亲密。您需要基于CONTEGGIO创建一个组存储桶,以便它们属于10个值(模)的存储桶,然后求出平均值。看到下面的模型:

DECLARE @AA_V_CARTELLA_CLINICA_VALORI_ECG TABLE (Id INT, VALORE REAL, TIMESTAMP  datetime)
INSERT INTO @AA_V_CARTELLA_CLINICA_VALORI_ECG
SELECT 31853, 0.049, '2018-08-02 10:14:42.837' UNION ALL
SELECT 31854, 0.157, '2018-08-02 10:14:43.837' UNION ALL
SELECT 31855, 0.151, '2018-08-02 10:14:44.837' UNION ALL
SELECT 31856, 0.055, '2018-08-02 10:14:45.837' UNION ALL
SELECT 31857, 0.035, '2018-08-02 10:14:46.837' UNION ALL
SELECT 31858, -0.013, '2018-08-02 10:14:47.837' UNION ALL
SELECT 31859, -0.004, '2018-08-02 10:14:48.837' UNION ALL
SELECT 31860, -0.035, '2018-08-02 10:14:49.837' UNION ALL
SELECT 31861, -0.0032, '2018-08-02 10:14:50.837' UNION ALL
SELECT 31862, -0.031, '2018-08-02 10:14:51.837' UNION ALL
SELECT 31863, 0.049, '2018-08-02 10:14:52.837' UNION ALL
SELECT 31864, 0.053, '2018-08-02 10:14:53.837' UNION ALL
SELECT 31865, 0.061, '2018-08-02 10:14:54.837'







;WITH P AS(
SELECT 'ECG' AS NOME,
        V.TIMESTAMP  as ORA, 
        CAST(V.Valore AS DECIMAL(21,20)) AS VALORE, 
        row_number() over (order by V.TIMESTAMP ) AS CONTEGGIO, 
        V.ID AS ID_VALORE
        FROM @AA_V_CARTELLA_CLINICA_VALORI_ECG V
        --ORDER BY V.timestampc asc

)



SELECT  
    *, 
    GroupID=(CONTEGGIO - 1) / 10, 
    AVVALORE=AVG(VALORE) OVER ( PARTITION BY (CONTEGGIO - 1) / 10)
FROM P

答案 1 :(得分:0)

如果要移动平均线,请使用以下查询。

SELECT *, AVG(VALORE) OVER (ORDER BY TIMESTAMP ROWS 10 PRECEDING) AS MovingAvg
FROM @AA_V_CARTELLA_CLINICA_VALORI_ECG