SQL查询以获取时间范围列表的平均值
Posted
技术标签:
【中文标题】SQL查询以获取时间范围列表的平均值【英文标题】:SQL query to get average values over a list of time ranges 【发布时间】:2014-11-18 19:07:40 【问题描述】:我想获取时间范围列表中某些列的平均值。时间范围不固定,不是每年或每月的平均值。
我不想针对每个范围对数据库进行查询,如果可能的话,我希望只执行一次此查询。
因此,如果我们可以将以下 2 个时间范围的查询替换为仅一个查询,那就太棒了。
SELECT AVG(column1) FROM Table1 WHERE dateColumn > startRange1 && dateColumn < endRange1
SELECT AVG(column1) FROM Table1 WHERE dateColumn > startRange2 && dateColumn < endRange2
注意:时间范围列表可以在 1 到 12 个指定范围之间变化。
【问题讨论】:
【参考方案1】:case based aggregation
是在单个查询中执行此操作的一种方法。
SELECT AVG(case when dateColumn > startRange1 && dateColumn < endRange1 then column1 end) as range1Avg,
AVG(case when dateColumn > startRange2 && dateColumn < endRange2 then column1 end) as range2Avg
FROM Table1
【讨论】:
以上是关于SQL查询以获取时间范围列表的平均值的主要内容,如果未能解决你的问题,请参考以下文章