我需要在几个时间间隔内获得同一时期的平均计数。
所以现在我的查询看起来很丑陋,是否有可能让它变得更好?例如,如果我想获取 7 周的数据,我需要复制/粘贴完全相同的行 7 次,啊!
我还有一个关于如何丢弃极值的问题(0、10、15、11 - 从样本中删除 0)。
SELECT
ROUND((w1 + w2 + w3 + w4) / 4)
FROM (
SELECT COUNT(*) AS w1
FROM a.b
WHERE id = 1 AND DATE BETWEEN sysdate - 7 - (1 / 24 / 4) AND sysdate - 7),
(SELECT COUNT(*) AS w2
FROM a.b
WHERE
id = 1 AND DATE BETWEEN sysdate - 14 - (1 / 24 / 4) AND sysdate - 14),
(SELECT COUNT(*) as w3
FROM a.b
WHERE id = 1 AND DATE BETWEEN sysdate - 21 - (1 / 24 / 4) AND sysdate - 21),
(SELECT COUNT(*) as w4
FROM a.b
WHERE id = 1 AND DATE BETWEEN sysdate - 28 - (1 / 24 / 4) AND sysdate - 28);
如果它很重要,我正在使用 Oracle DB。
最佳答案
也许尝试使用 GROUP BY。
SELECT AVG(C) FROM (
SELECT SUM(1) AS C
,to_number(to_char(date,'WW')) as DT FROM a.b
GROUP BY to_number(to_char(date,'WW')))
关于sql - 从数据库中选择几个时期的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35376006/