我有以下数据:
Table: CROSS_REF
DEPT LOC TRAN
100 A1 10
100 A2 10
100 A3 20
传输20的最大计数为1,传输10的最大计数为2。
我需要返回这个数据:
TRAN
10
怎么做?
在Oracle 12c中,您可以使用:
SELECT tran
FROM cross_ref
GROUP BY tran
ORDER BY COUNT(*) DESC
FETCH FIRST ROW ONLY;
对于样本数据:
CREATE TABLE cross_ref(DEPT, LOC, TRAN) AS
SELECT 100, 'A1', 10 FROM DUAL UNION ALL
SELECT 100, 'A2', 10 FROM DUAL UNION ALL
SELECT 100, 'A3', 20 FROM DUAL
输出:
<表类>tbody><<tr> TRAN 10 表类>您正在寻找的值在统计学中称为模式, Oracle有一个函数
stats_mode()
来计算这个值。假设您想要每个部门的值:SELECT dept, stats_mode(tran) FROM cross_ref GROUP BY dept;
如果你想要整体模式:
SELECT stats_mode(tran) FROM cross_ref;
这是一个db<>小提琴