sql - 从数据库中选择几个时期的平均值

标签 sql database oracle statistics

我需要在几个时间间隔内获得同一时期的平均计数。
所以现在我的查询看起来很丑陋,是否有可能让它变得更好?例如,如果我想获取 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/

相关文章:

php - PHP中使用MYSQL选择结果而不是for循环

sql-server - Oracle 到 SQL 服务器的通信 - JDBC 与 ODBC

oracle - 奇怪的 Oracle 11/ADO.NET 错误

sql - Oracle SQL 触发器插入/更新

用于版本控制和多语言的数据库结构

php - 如何以表单的形式展示数据,以将新数据更新到DB?

c# - 两个带有链接字段的插入查询

sql - 是否有一个表保存 sysobjects.xtype 描述的列表?

mysql - SQL HAVING 子句中的算术运算符

database - 恢复尝试在共享主机中创建数据库的 MySQL 转储