我有一个表 A 有两列名为 B 和 C 如下:
('W1','F2')
('W1','F7')
('W2','F1')
('W2','F6')
('W2','F8')
('W4','F7')
('W6','F2')
('W6','F15')
('W7','F1')
('W7','F4')
('W7','F17')
('W8','F13')
如何在oracle中使用sql找到B列中出现的时间最多的一个?(在这种情况下,它是 W2 和 W7)。谢谢!
/*
*/
WITH T1 AS
(
SELECT C2,COUNT(*) AS COUNT
from YOURTABLE
GROUP BY C2
)
SELECT C2,COUNT FROM T1 WHERE COUNT=(SELECT MAX(COUNT) FROM T1 )
;
使用子查询为 columnB 中的每个值计算 columC 中的项目数,并rank()
根据该计数计算子查询的结果。然后在您的主选择中仅返回 columnB 的值,其中子查询返回的行的排名为 1:
SELECT ColB
FROM (
SELECT ColB,
Count(ColC),
rank() over (ORDER BY Count(ColC) DESC) AS rnk
FROM yourTable
GROUP BY ColB)
WHERE rnk = 1
这是一个 sql 小提琴:http ://sqlfiddle.com/#!4/fa6bd/2
Select ColB, Count(*)
FROM yourTable
GROUP BY ColB
ORDER BY count(*) desc