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查询以获取时间范围列表的平均值的主要内容,如果未能解决你的问题,请参考以下文章

如何在全范围内平均减少 SQL 查询的结果行?

如何从由 SQL 查询填充的列表框中获取信息?

用于显示多个日期范围之间的间隔的 SQL 查询

SQL查询将与多个范围匹配的数字列表转换为值列表

使用单元格值范围内的条件运行 SQL 查询列表

SQL解析值列表以查找大于/小于/范围