查找总和最大的行

时间:2019-07-18 19:28:33

标签: sql postgresql

我有导师的数据。我在SESSION表中记录了每月花在辅导上的时间。我需要知道谁在2006年3月的补习时间最多。

桌老师

tutorID      
1
2

表会话

tutorID     Hours      Month
1           2          March
1           1          March
2           1          March

预期输出:

TutorID
1

2 个答案:

答案 0 :(得分:1)

我建议:

select top 1 sum(Hours), tutorID from SESSION where Month like 'March' group by 
tutorID order by sum(Hours) DESC

答案 1 :(得分:0)

使用2 CTE s。
1st将返回每个导师的所有总和。
第二个将返回第一个cte返回的总和。
最终,您的select语句将只返回第一学时的导师,其时长等于第二学时返回的最大时数。

with 
  sumcte as (
    select tutorID, sum(hours) sumhours 
    from session 
    where month = 'March' -- here there should be another condition for the year?
    group by tutorID 
  ),
  maxcte as (
    select max(sumhours) maxhours from sumcte
  )  
select tutorid from sumcte
where sumhours = (select maxhours from maxcte)