2

我有以下查询:

SELECT AVG(val) from floatTable
WHERE tagindex IN(1,2,3,4)
AND DateAndTime > '$first_of_year'

它返回今年迄今为止为这四个标签测量的所有值的平均值。由于我已经在检索这些数据,我如何获取自月初、第一周和午夜以来的数据?我已经将这些日期计算为 $first_of_month、$first_of_week 和 $midnight。我正在尝试最小化查询,并希望有人可以帮助我创造一些 SQL 魔法,以便在单个查询或一组优化的查询中返回这些数据。这个查询平均需要 300 秒,所以我想尽可能少做。

先感谢您。

4

1 回答 1

5
SELECT AVG(case when DateAndTime > '$first_of_year' then val end) as FirstOfYear,
       AVG(case when DateAndTime > '$first_of_month' then val end) as FirstOfMonth,
       AVG(case when DateAndTime > '$first_of_week' then val end) as FirstOfWeek,
       AVG(case when DateAndTime > '$midnight' then val end) as Midnight
from floatTable 
WHERE tagindex IN(1,2,3,4) 
    and DateAndTime > '$first_of_year' 

为了提高性能,请确保您对列DateAndTimetagIndex.

于 2010-09-13T18:14:21.440 回答