0

表: http: //pastie.org/6205255

如何显示具有最大(总和(时间))的导师姓名?

首先我尝试了这个:

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

answer = 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

对于 Oracle,一种简单的方法是GROUP BY按时间总和(降序)进行正常排序并选择第一行;

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

一个用于测试的 SQLfiddle

于 2013-02-17T19:11:38.113 回答
0

我今天无法使用电脑,但试试这个。

用一个 as (
  选择导师,sum(time) sum_time
    从教程
    由导师分组
b 为 (
  选择导师,sum_time,rank() over(order by sum_time desc) RN
    从一个
)
  选择导师,sum_time
    从 b
    其中 RN = 1

如果不止一位导师并列榜首,这可能会返回不止一排。将 rank 更改为 row_number 以任意选择一个。

于 2013-02-17T19:20:32.760 回答