0

表 : http://pastie.org/6205255

max(sum(time)) を持つチューター名を表示するには?

最初にこれを試しました:

select max(sum(time))
from tutorial
group by tutor;

答えは 5 です。最大時間が表示されましたが、誰が時間 (チューター名) を持っているかは表示されませんでした。

次に、これを試しました:(最大と合計の分離)

select max(x) "THE MAXIMUM"
from (
    select sum(time) x,tutor from tutorial group by tutor
);

回答 = 5. 書き込もうとしましselect tutor,max(x) "THE MAXIMUM" ......たが、まだエラーです

それらのすべてに同じエラーがあります。エラーは言う:

ORA-00937: not a single-group group function
00937. 00000 -  "not a single-group group function"

私を助けてください

4

2 に答える 2

0

For Oracle, a simple way would be to just do a normal GROUP BY, order by the sum of the time (descending) and pick the first row;

SELECT * FROM (
   SELECT SUM("time") "time", "tutor"
   FROM tutorial
   GROUP BY "tutor"
   ORDER BY "time" DESC
)
WHERE ROWNUM=1

An SQLfiddle to test with.

于 2013-02-17T19:11:38.113 に答える
0

今日はコンピューターにアクセスできませんが、これを試してください。

as (
  チューターを選択、sum(time) sum_time
    チュートリアルから
    チューターごとにグループ化
b as (
  select tutor, sum_time, rank() over( order by sum_time desc) RN
    から
)
  チューターを選択、sum_time
    bから
    ここで、RN = 1

複数のチューターがトップに並んでいる場合、これは複数の行を返す可能性があります。ランクをrow_numberに変更して、任意に1つ選択します。

于 2013-02-17T19:20:32.760 に答える