0

我有一个表 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)。谢谢!

4

3 回答 3

1

/*

  1. C2 指 B 栏
  2. T1 指别名

*/

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 )
;

于 2013-02-23T06:39:04.460 回答
1

使用子查询为 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

于 2013-02-23T05:41:24.800 回答
0
Select ColB, Count(*) 
FROM yourTable 
GROUP BY ColB
ORDER BY count(*) desc
于 2013-02-23T05:18:44.133 回答