【发布时间】:2012-03-16 19:11:00
【问题描述】:
我想从一张表中的一列 (value_to_count) 中获取三个不同的平均值,其中所有这些平均值都有不同的 WHERE 子句(根据时间)。
示例数据:
###services#### Table
service_id value_to_count time
----------- ----------------------- ---------
604 2054 04:04:50
604 3444 05:00:15
604 2122 07:12:50
604 2144 09:10:50
604 2001 13:12:53
602 2011 15:00:12
602 2115 17:22:35
602 1411 20:22:12
602 1611 21:04:52
602 2111 23:43:45
我目前正在使用此查询来获取 18 到 23 之间的时间平均值:
查询
SELECT
service_id AS service, AVG(value_to_count) AS primetime
FROM services
WHERE HOUR(time) BETWEEN 18 AND 23
GROUP BY service_id
它给了我这样的结果:
### Result ####
service primetime
----------- --------------
604 2154
602 2444
现在我想在我已经得到的平均值旁边获得其他平均值。这次我只想获得“HOUR(time) BETWEEN 06 AND 18”和“HOUR(time) BETWEEN 23 AND 06”的平均值。
这是我想要得到的结果形式:
### Wanted Result ####
service primetime other_time_interval_1 other_time_interval_2
----------- -------------- ---------------- ------------------
604 2154 2352 1842
602 2444 4122 1224
【问题讨论】:
-
BETWEEN 23 and 06不起作用。它必须分成两个独立的条件。此外,您似乎重复计算了 18、23 和 06 小时的事件,因为这两个限制都包含在内。
标签: sql average multiple-conditions