005、【MYY】sql题

 

 

题目如下:

 

问:

1.1、查询一班得分在80分以上的学生 ;

1.2、用一条sql语句查询出各个班级的男生人数和平均分。

 

建表语句如下:

drop table if exists t_classes;
create table t_classes(
classes_id int(3) auto_increment,
classes_name varchar(40),
constraint pk_classes_id primary key(classes_id)
)



drop table if exists t_student;
create table t_student(
student_id int(10),
classes_id int(3),
student_name varchar(20),
sex char(2),
score int(3),
constraint student_id_pk primary key(student_id),
constraint fk_classes_id foreign key(classes_id) references t_classes(classes_id) 
)
View Code

 

解答:

1.1、查询一班得分在80分以上的学生 。如下:

# 1.1、查询一班得分在80分以上的学生 ;
select c.classes_name,s.student_id,s.student_name,s.sex,s.score
from t_classes c join t_student s
on c.classes_id = s.classes_id
where c.classes_name='一班' and s.score>80;

 

 1.2、用一条sql语句查询出各个班级的男生人数和平均分。

如果理解成:用一条sql语句查询出各个班级的  男生人数  和  男生平均分。如下:

# 1.2、用一条sql语句查询出各个班级的男生人数和平均分。
# 如果理解成: 用一条sql语句查询出各个班级的 男生人数和 男生平均分。 如下:
# 查询出性别为男的,按照班级分组

select c.classes_id as '班级id', c.classes_name as '班级名称', count(*) as '男生人数', avg(s.score) as '男生平均分'
from t_classes c join t_student s
on c.classes_id = s.classes_id
where s.sex='男'
group by c.classes_id;

 

如果理解成:用一条sql语句查询出  各个班级的男生人数  和  各个班级的平均分。 网友给的答案如下:

# 如果理解成:用一条sql语句查询出 各个班级的男生人数 和 各个班级的平均分。 如下:

SELECT
c.classes_name,
count( s.classes_id ),
b.avg_score
FROM
t_student s JOIN t_classes c ON s.classes_id = c.classes_id
JOIN (SELECT classes_id,AVG(score) as avg_score FROM t_student GROUP BY classes_id) b
on b.classes_id = s.classes_id
WHERE
s.sex = '男'
GROUP BY
s.classes_id;

 

 

 

 

 

 

 

posted @ 2021-10-11 12:16  空-山-新-雨  阅读(396)  评论(1编辑  收藏  举报