sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo promediar/sumar datos en un día en SQL Server 2005

Una posibilidad, si necesita hacer esto con la suficiente frecuencia:agregue tres columnas calculadas para el día, el mes y el año a su tabla. Esas columnas se calculan automáticamente en función de la timestamp columna, y son solo valores enteros, por lo que son fáciles de usar en un GROUP BY .

Para hacer esto, use estas declaraciones T-SQL:

ALTER TABLE dbo.ROASTER_FEED ADD TSDay AS DAY(timestamp) PERSISTED
ALTER TABLE dbo.ROASTER_FEED ADD TSMonth AS MONTH(timestamp) PERSISTED
ALTER TABLE dbo.ROASTER_FEED ADD TSYear AS YEAR(timestamp) PERSISTED

Ahora, puede seleccionar fácilmente sus datos según el día que desee:

SELECT TSDay, TSMonth, TSYear, SUM(FEED)   -- use AVG(FEED) for average values
FROM dbo.ROASTER_FEED
WHERE TSYear = 2011 AND TSMonth = 8   -- or whatever you want to grab from the table!
ORDER BY timestamp
GROUP BY TSDay, TSMonth, TSYear