我有这个查询,我想获得前 5名force_matching_signature
。之后,我想显示每个子结果的附加信息。
以下查询在IN
语句仅返回一个结果 ( first 1
) 并且在主中SELECT
使用等号时工作正常,但如果我想在 CTE 部分中返回多行并且我放入in
主查询,则查询永远不会结束。
WITH
top_signature
AS
( SELECT force_matching_signature, COUNT (*) "Count"
FROM gv$sqlarea
WHERE force_matching_signature <> 0
GROUP BY force_matching_signature
ORDER BY 2 DESC
FETCH FIRST 1 ROWS ONLY)
SELECT force_matching_signature,
module,
users_executing,
COUNT (*) CUANTOS
FROM gv$sqlarea
WHERE force_matching_signature IN
(
SELECT force_matching_signature FROM top_signature
)
GROUP BY force_matching_signature, module, users_executing
ORDER BY 3 DESC;
我想不出如何优化语句,以便花费合理的时间。