0

次のように、B と C という名前の 2 つの列を持つテーブル A があります。

('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

サブクエリを使用して、columnBの各値のcolumCのアイテム数とrank()、そのカウントに基づくサブクエリの結果を計算します。次に、メインの選択で、サブクエリによって返される行のランクが1であるcolumnBの値だけを返します。

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 に答える
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 に答える
0
Select ColB, Count(*) 
FROM yourTable 
GROUP BY ColB
ORDER BY count(*) desc
于 2013-02-23T05:18:44.133 に答える