首页 > 试题广场 >

查询成绩

[编程题]查询成绩
  • 热度指数:71928 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有以下3张表分别是学生表Student,成绩表SC,课程表Course,查询出语文,数学,英语3科的平均成绩大于60分的学生人数。
学生表Student
sId (学生编号) sname (学生姓名) sage (学生年龄) ssex (学生性别)
1 张三 14
2 李四 15
3 王五 13
4 小红 14
5 王明 16
成绩表SC
sId (学生编号) cId (课程编号) score (分数)
1 1 80
1 2 88
1 3 90
2 1 60
2 2 58
2 3 61
3 1 70
3 2 77
3 3 89
4 1 88
4 2 75
4 3 67
5 1 90
5 2 78
5 3 87
课程表Course
cId (课程编号) cname (课程名称)
1 语文
2 数学
3 英语

输出示例(表格模式)
count(*)
3

示例1

输入

create table Student(sId char(10),sname char(10),sage char(10),ssex char(10));
insert into Student values('1' , '张三' , '14' , '男');
insert into Student values('2' , '李四' , '15' , '男');
insert into Student values('3' , '王五' , '13' , '女');
insert into Student values('4' , '小红' , '14' , '女');


create table Course(cId char(10),cname char(10));
insert into Course values('1' , '语文' );
insert into Course values('2' , '数学' );
insert into Course values('3' , '英语' );

create table SC(sId char(10),cId varchar(10),score decimal(18,1));
insert into SC values('1' , '1' , 80);
insert into SC values('1' , '2' , 88);
insert into SC values('1' , '3' , 90);
insert into SC values('2' , '1' , 60);
insert into SC values('2' , '2' , 58);
insert into SC values('2' , '3' , 61);
insert into SC values('3' , '1' , 70);
insert into SC values('3' , '2' , 77);
insert into SC values('3' , '3' , 89);
insert into SC values('4' , '1' , 88);
insert into SC values('4' , '2' , 75);
insert into SC values('4' , '3' , 67);



输出

count(*)
3
头像 牛客题解官
发表于 2025-03-14 12:24:19
精华题解 这道题目要求我们查询出语文、数学、英语三科的平均成绩大于60分的学生人数。我们要做的事情如下: 1. 确定总体问题 我们需要从学生信息、课程信息和成绩信息中提取数据,计算每个学生的平均成绩,并筛选出平均成绩大于60分的学生人数。 2. 分析关键问题 连接表:将Student、Course和SC表连 展开全文
头像 御坂202412
发表于 2025-04-09 15:53:02
SELECT count(*) FROM ( SELECT sId FROM SC WHERE cId IN ( SELECT 展开全文
头像 准备进厂的芹菜很伟大
发表于 2025-04-15 21:36:38
SELECT count(*) FROM ( SELECT sname FROM SC JOIN Student AS s ON s.sId = SC.sId JOIN Course AS c ON c.cId = SC.cId GROUP BY sname HAVING AV 展开全文
头像 谦虚的比尔在炒股
发表于 2025-06-15 10:27:55
select count(*) from ( select sId from SC group by sId having avg(score) > 6 展开全文
头像 会编程的发呆爱好者加麻加辣
发表于 2025-04-09 20:07:57
select count(*) from (select s.sId,avg(SC.score) as avg_score from Student s join SC on s.sId=SC.sId group by s.sId)a where a.avg_score >60 因为本题 展开全文
头像 牛客901112099号
发表于 2025-03-23 23:07:06
select count(*) from ( select count(*) from SC group by sId having 展开全文
头像 在找内推的mmmm
发表于 2025-02-27 19:34:31
甚至都不需要联表 select count(*) from ( SELECT COUNT(DISTINCT sid) num FROM SC s GROUP BY sid HAVING AVG(s.score) > 60) t
头像 muchenfeng
发表于 2025-06-16 00:55:36
-- 考虑到有学生为参加考试导致分数为 NULL 的情况 SELECT count(*) FROM ( SELECT St.sId, sum(IFNULL(SC.score, 0)) / count(distinct C 展开全文
头像 雪鹅在牛客
发表于 2025-03-12 11:34:51
select count(*) from( select sId, avg(score) avg_s from SC where cId in ( select cId from Course where cname in ('语文','数学','英语') --根据题目要求 展开全文
头像 Lateral
发表于 2025-03-21 11:49:42
select count(*) from (select t1.sId from (select sId, case when cId=1 then score else 0 end as c1_score from SC) t1 left join (select sId, case 展开全文
头像 牛客794288350号
发表于 2025-06-12 22:41:47
select count(*) from (select s.sid from SC s join Course c on s.cid=c.cid where c.cname in ('语文','数学' 展开全文