【发布时间】:2018-10-04 10:28:36
【问题描述】:
有 2 个表,即学生和记分卡,我为每个表编写了可创建脚本以及插入语句中的一些示例数据。
我觉得这里缺少一些链接,并且无法获得在每门 sem 和每门课程中得分最高的学生姓名,是我错了还是缺少了什么?提前致谢。
表的sql脚本
CREATE TABLE student (
name VARCHAR2(100),
regno NUMBER(20) PRIMARY KEY,
dob DATE,
course VARCHAR2(200)
);
INSERT INTO student VALUES (
'S1',
1001,
'5-04-2000',
'computer'
);
INSERT INTO student VALUES (
'S2',
1002,
'8-04-2010',
'Electronics'
);
INSERT INTO student VALUES (
'S3',
1003,
'2-04-2100',
'management'
);
INSERT INTO student VALUES (
'S4',
1004,
'28-05-2000',
'Electronics'
);
INSERT INTO student VALUES (
'S5',
1005,
'2-04-2000',
'computer'
);
COMMIT;
CREATE TABLE markscard (
regno NUMBER(20)
REFERENCES student ( regno ),
sem VARCHAR2(100),
sub1 NUMBER(20),
sub2 NUMBER(20),
sub3 NUMBER(20),
tot NUMBER(20),
avge NUMBER(20),
result VARCHAR2(200)
);
INSERT INTO markscard VALUES (
1001,
1,
30,
30,
30,
90,
30,
'pass'
);
INSERT INTO markscard VALUES (
1002,
1,
10,
10,
10,
100,
10,
'fail'
);
INSERT INTO markscard VALUES (
1003,
2,
100,
100,
100,
300,
100,
'distinction'
);
INSERT INTO markscard VALUES (
1004,
2,
20,
20,
20,
60,
20,
'pass'
);
INSERT INTO markscard VALUES (
1005,
1,
30,
30,
30,
100,
30,
'pass'
);
COMMIT;
这是我尝试过但无法成功获取学生姓名的查询,因为我觉得缺少一些链接。
SELECT
MAX(hightest_score),
course_name,
sem
FROM
(
SELECT
MAX(markscard.tot) AS hightest_score,
student.course AS course_name,
markscard.sem AS sem,
student.name AS sname
FROM
markscard,
student
WHERE
student.regno = markscard.regno
GROUP BY
student.course,
markscard.sem,
student.name
)
GROUP BY
course_name,
sem;
【问题讨论】:
标签: sql oracle oracle-sqldeveloper