sql - 在 oracle 中仅显示 SQL 查询的最大结果
问题描述
我有一个查询:
SELECT
STUDENT.S_ID AS "ID",
STUDENT.S_LAST ||' '|| STUDENT.S_FIRST AS "Student Name",
COUNT(COURSE.COURSE_NO) AS "Number of courses",
SUM(COURSE.CREDITS) AS "Total Credits"
FROM
STUDENT
JOIN ENROLLMENT
ON ENROLLMENT.S_ID = STUDENT.S_ID
JOIN COURSE_SECTION
ON COURSE_SECTION.C_SEC_ID = ENROLLMENT.C_SEC_ID
JOIN COURSE
ON COURSE.COURSE_NO = COURSE_SECTION.COURSE_NO
GROUP BY STUDENT.S_ID, STUDENT.S_lAST, STUDENT.S_FIRST;
它显示结果:
ID Student Name Number of courses Total Credits
------ ------------------------------- ----------------- -------------
JO100 Jones Tammy 6 21
MA100 Marsh John 5 15
SM100 Smith Mike 2 6
PE100 Perez Jorge 6 18
JO101 Johnson Lisa 5 15
NG100 Nguyen Ni 4 12
我只想要总学分最高的学生。为此,它将是 ID 为 JO100 的学生。如何在查询中实现这一点?
解决方案
尝试这个 -
SELECT
*
FROM
(
SELECT
A.*,
DENSE_RANK() OVER(
ORDER BY "TOTAL CREDITS" DESC
) AS RNK
FROM
(
SELECT
STUDENT.S_ID AS "ID",
STUDENT.S_LAST
|| ' '
|| STUDENT.S_FIRST AS "STUDENT NAME",
COUNT(COURSE.COURSE_NO) AS "NUMBER OF COURSES",
SUM(COURSE.CREDITS) AS "TOTAL CREDITS"
FROM
STUDENT
JOIN ENROLLMENT ON ENROLLMENT.S_ID = STUDENT.S_ID
JOIN COURSE_SECTION ON COURSE_SECTION.C_SEC_ID = ENROLLMENT.C_SEC_ID
JOIN COURSE ON COURSE.COURSE_NO = COURSE_SECTION.COURSE_NO
GROUP BY
STUDENT.S_ID,
STUDENT.S_LAST,
STUDENT.S_FIRST
) A
)
WHERE
RNK = 1;
推荐阅读
- opencv - 如何从 Yocto 图像中排除 opencv 编译?
- perforce - 未经检查修改的文件未在 p4v 工作区中标记为已修改
- javascript - 如何触发动态创建的元素的事件?
- ios - 如何从 json alamofire 在选择器视图中添加内容,我想选择访问者类型作为选择器视图,以便我想在数组中获取它
- c# - 为什么 Microsoft.NetCore.Analyzers CA2000 中的分析结果有差异
- aws-sdk - 带有 AWS SDK 2 for Java 的 Min.io 拒绝正常工作
- php - 使用 php 获取输入字段的 id 并将其设置在变量中
- javascript - 在缩放的图像画布上绘制缩放的矩形
- graphql - 使用 apollo 客户端钩子停止挂起的请求
- android - 使用电容器在 android 上推送通知计数(徽章计数)