gpt4 book ai didi

sql - Oracle 中的确定性 stats_mode

转载 作者:行者123 更新时间:2023-12-04 18:26:31 27 4
gpt4 key购买 nike

在Oracle中,stats_mode函数选择一组数据的模式。不幸的是,在存在关系的情况下选择结果是不确定的(例如 stats_mode(1,2,1,2) 可能返回 1 或 2,具体取决于 Oracle 中行的顺序。在许多情况下,这是 Not Acceptable 。是否有函数或好的技术能够为 stats_mode 函数提供您自己的确定性排序?

最佳答案

甲骨文网页 STATS_MODE解释说 如果存在多种模式,Oracle 数据库会选择一种并只返回那个值

因为没有额外的参数等,你不能改变它的行为。


但是,同一页面也显示以下示例查询可以生成多个模式值...

SELECT x FROM (SELECT x, COUNT(x) AS cnt1 FROM t GROUP BY x)
WHERE cnt1 = (SELECT MAX(cnt2) FROM (SELECT COUNT(x) AS cnt2 FROM t GROUP BY x));

通过修改此类代码,您可以再次选择一个值,由指定的 ORDER 确定...

SELECT x FROM (SELECT x, MAX(y) AS y, COUNT(x) AS cnt1 FROM t GROUP BY x)
WHERE cnt1 = (SELECT MAX(cnt2) FROM (SELECT COUNT(x) AS cnt2 FROM t GROUP BY x))
AND rownum = 1
ORDER BY y DESC;

不幸的是,有点乱,尽管您可以针对您的特定情况稍微整理一下。但我不知道还有其他根本不同的方法。

关于sql - Oracle 中的确定性 stats_mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com