用SQL语句查询最大值,使用where rownum=1 若有几个相同的最大值都要被选择 该如何解决该问题?
发布网友
发布时间:2022-04-10 20:48
我来回答
共4个回答
热心网友
时间:2022-04-10 22:17
使用 RANK() 函数进行处理.
注:
RANK 函数, 是计算排名顺序的函数.
下面是例子:
CREATE TABLE test_course (
student_name VARCHAR(10), -- 学生
course_name VARCHAR(10), -- 课程
grade INT -- 成绩
);
INSERT INTO test_course VALUES('甲', '语文', 95);
INSERT INTO test_course VALUES('乙', '语文', 85);
INSERT INTO test_course VALUES('丙', '语文', 75);
INSERT INTO test_course VALUES('丁', '语文', 65);
INSERT INTO test_course VALUES('戊', '语文', 55);
INSERT INTO test_course VALUES('己', '语文', 50);
INSERT INTO test_course VALUES('庚', '语文', 60);
INSERT INTO test_course VALUES('辛', '语文', 70);
INSERT INTO test_course VALUES('壬', '语文', 80);
INSERT INTO test_course VALUES('奎', '语文', 90);
INSERT INTO test_course VALUES('甲', '数学', 90);
INSERT INTO test_course VALUES('乙', '数学', 80);
INSERT INTO test_course VALUES('丙', '数学', 70);
INSERT INTO test_course VALUES('丁', '数学', 60);
INSERT INTO test_course VALUES('戊', '数学', 50);
INSERT INTO test_course VALUES('己', '数学', 50);
INSERT INTO test_course VALUES('庚', '数学', 60);
INSERT INTO test_course VALUES('辛', '数学', 70);
INSERT INTO test_course VALUES('壬', '数学', 85);
INSERT INTO test_course VALUES('奎', '数学', 95);
按照分数 排名 从高到底
SELECT
RANK() OVER( ORDER BY SUM(grade) DESC) AS NO,
student_name,
SUM(grade) AS AllGrade
FROM
test_course
GROUP BY
student_name
ORDER BY
SUM(grade) DESC
NO STUDENT_NA ALLGRADE
---------- ---------- ----------
1 奎 185
1 甲 185
3 乙 165
3 壬 165
5 丙 145
6 辛 140
7 丁 125
8 庚 120
9 戊 105
10 己 100
已选择10行。
热心网友
时间:2022-04-10 23:35
先把最大值找出来,然后以最大值做为条件再查询一遍。
热心网友
时间:2022-04-11 01:10
用 rank() over() 的方式
例如 A表 有两个字段 A1,A2
需要取A2最大值的记录
select * from
(
select a1,a2,rank()over(order by a2) t from A
)
where t=1
热心网友
时间:2022-04-11 03:01
具体问题具体分析吧
你前边是怎么写的?