sql - 平均重做使用情况查询
问题描述
我正在尝试查询以 Gb 为单位的平均重做,但由于以下错误而失败。
按天和小时(不带 )获取重做使用情况的查询AVG()
有效。
SELECT
Start_Date,
Start_Time,
Num_Logs,
AVG(Round(Num_Logs * (Vl.Bytes / (1024 * 1024 * 1024)),2)) AS AVG_Gbytes,
Vdb.NAME AS Dbname
FROM
(SELECT
To_Char(Vlh.First_Time, 'YYYY-MM-DD') AS Start_Date,
To_Char(Vlh.First_Time, 'HH24') || ':00' AS Start_Time,
COUNT(Vlh.Thread#) Num_Logs
FROM
V$log_History Vlh
GROUP BY
To_Char(Vlh.First_Time, 'YYYY-MM-DD'),
To_Char(Vlh.First_Time, 'HH24') || ':00'
) Log_Hist, V$log Vl , V$database Vdb
WHERE
Vl.Group# = 1
ORDER BY
Log_Hist.Start_Date, Log_Hist.Start_Time;
错误:
ERROR at line 2:
ORA-00937: not a single-group group function
解决方案
在聚合查询中,SELECT
列需要与GROUP BY
. 聚合查询要么有一个显式的GROUP BY
,要么使用聚合函数(例如AVG()
)。
在您的情况下,您有一个聚合函数,并且没有GROUP BY
. 要解决此问题,请将所有未聚合的表达式包含在GROUP BY
. 所以添加:
GROUP BY Start_Date, Start_Time, Num_Logs, Vdb.NAME
目前尚不清楚这是否确实符合您的要求。但是你没有解释。如果这有效(即没有错误),但没有达到您想要的效果,请使用示例数据、所需结果和清晰的解释提出一个新问题。
推荐阅读
- python - 使用 conda 进行 Python 通用安装
- flutter - 如何在颤动中使用逗号分隔符格式化整数值
- r - 将“+”等特殊字符转换为R中的html
- c++ - 多线程 c++ 应用程序崩溃的崩溃转储分析
- r - R中的InfluxDB v2带注释的csv
- java - 使用时如何获取用户计算机上文件的URL?
- python - 如何找到分类列和数值列之间的相关性
- html - 是否有一个 wordpress 插件可以使 iframe 的高度与其内容相同?
- performance-testing - 如何在 Loadrunner VUGen 中获取整个响应体?
- java - 比较对象数组中某个特定字段的值以进行合并排序。关于使用 compareTo 的初学者问题