Tsql T-SQL(平均值)每10行
我的T-SQL数据库中有以下表格: 在此查询中,我有以下示例记录: 现在我有更多的条目 我有一个疑问:Tsql T-SQL(平均值)每10行,tsql,select,average,Tsql,Select,Average,我的T-SQL数据库中有以下表格: 在此查询中,我有以下示例记录: 现在我有更多的条目 我有一个疑问: 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
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”进行平均。有可能吗?@bircastri我希望我能很好地理解你,但我认为你很接近。您需要的是基于CONTEGGIO创建一个组bucket,这样它们就属于一个包含10个值(模)的bucket,并找到其平均值。请参见下面的模型:
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
如果您想要移动平均,请使用下面的查询
SELECT *, AVG(VALORE) OVER (ORDER BY TIMESTAMP ROWS 10 PRECEDING) AS MovingAvg
FROM @AA_V_CARTELLA_CLINICA_VALORI_ECG
是否希望每10行移动平均值?如果我尝试执行您的查询,我会出现以下错误:“行”附近的语法不正确。@bircastri,per,自2008年起应该支持它。支持Yes OVER子句,但语法我认为不正确。我已在我的SQL SERVER 2017本地运行它。@bircastri,请参阅修改后的版本。我已经添加了所有其他列。