繁体   English   中英

在SQL中选择两个最大查询

[英]Selecting two max queries in sql

我想知道如何在查询中使用两个max函数,我有这个查询

SELECT g.studentid, g.blockcode, sb.subjectcode, sb.daystart, sb.dayend, sb.stime, sb.sday, ii.firstname instructorname,  ii.lastname instructorlastname, sb.roomcode, r.building, d.description, rr.studentid,rr.sem, rr.sy
            FROM grades g 

            JOIN subjectblocking sb ON g.blockcode=sb.blockcode
            JOIN instructorinfo ii ON sb.instructorid=ii.instructorid
            JOIN subjects d ON sb.subjectcode = d.subjectcode
            JOIN room r ON sb.roomcode=r.roomcode
            JOIN register rr ON rr.studentid=g.studentid
            WHERE g.studentid='2011-S1308'
            AND rr.sem=(SELECT max(sem) from register
            WHERE sy= (SELECT max(sy) from register))
            ORDER BY  sb.daystart ASC, sb.stime like '%AM%' DESC;

我之所以要使用两个最大值,是因为我希望学期和学年都达到最大值,以便学生可以查看当前进度表。我应该如何同时使其达到最大值? 另外,我的查询中的问题是只有1个max有效,即max(sem)。 先感谢您!

您需要使用

MAX(your_column) OVER (PARTITION BY semester_column) max_by_semester
MAX(your_column) OVER (PARTITION BY year_column) max_by_year

这样,您将获得由PARTITION BY子句选择的列值选择的数据切片的MAX值。

以这种方式使用MAX并不是一个聚合函数,而是一个窗口函数,其行为完全不同,您不需要Group By

您可以在此处找到有关Window功能的更多信息。

为了使查询正常工作,您需要最大的sy / sem组合,而不是单独使用。 我认为查询看起来像:

SELECT g.studentid, g.blockcode, sb.subjectcode, sb.daystart, sb.dayend, sb.stime, sb.sday,
       ii.firstname instructorname, ii.lastname instructorlastname,
       sb.roomcode, r.building, d.description, rr.studentid, rr.sem, rr.sy
FROM grades g JOIN
     subjectblocking sb
     ON g.blockcode = sb.blockcode JOIN
     instructorinfo ii
     ON sb.instructorid = ii.instructorid JOIN
     subjects d
     ON sb.subjectcode = d.subjectcode JOIN
     room r
     ON sb.roomcode = r.roomcode JOIN
     register rr
     ON rr.studentid = g.studentid
WHERE g.studentid = '2011-S1308' AND
      (sy, rr.sem) = (select sy, sem from register order by sy desc, sem desc limit 1)
ORDER BY sb.daystart ASC, sb.stime like '%AM%' DESC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM