2010-09-09 21 views
1

je la requête suivanteagrégat SQL avec plusieurs lignes

SELECT tagindex, AVG(val) from floatTable 
WHERE tagindex IN(828,856,883,910) 
    AND DateAndTime > DATEADD(HH,-1,GETDATE()) 
    AND DateAndTime < DATEADD(HH,-2,GETDATE()) 
group by tagindex 

Il renvoie les éléments suivants:

828 1 
856 1 
883 1 
910 1 

Comment puis-je retourner un résultat unique où il est la moyenne combinée de toutes les lignes?

+1

Quand vous dites « la moyenne combinée de toutes les lignes », voulez-vous dire les lignes de floatTable, ou les lignes du jeu de résultats vous montrer? La réponse de RedFilter vous donne l'ancien, réponse de Jeremy le dernier. Je devrais ajouter que ce dernier semble statistiquement très suspect - les moyennes des moyennes sont rarement la bonne chose à faire. –

+0

RedFilter fourni ce que je cherchais. Je suppose que je dois revenir aux bases :) – user438199

Répondre

0
Select Avg(AverageValue) 
From 
(
    SELECT tagindex, AVG(val) as AverageValue from floatTable 
    WHERE tagindex IN(828,856,883,910) 
    AND DateAndTime > DATEADD(HH,-1,GETDATE()) AND DateAndTime < DATEADD(HH,-2,GETDATE()) 
    group by tagindex 
) AverageValues 
3
SELECT AVG(val) 
FROM floatTable 
WHERE tagindex IN (828, 856, 883, 910) 
    AND DateAndTime > DATEADD(HH, -1, GETDATE()) 
    AND DateAndTime < DATEADD(HH, -2, GETDATE())