题目:
要求:
只能使用一个select,不能使用子查询,必须使用group by 和 having
方法:
步骤1:
#创建表stu,其他字段这里用不到
create table stu(
name varchar(10) not null default '',
subject varchar(10) not null default '',
score tinyint not null default 0
);
insert into stu
values
('张三','数学',90),
('张三','语文',50),
('张三','地理',40),
('李四','语文',55),
('李四','政治',45),
('王五','政治',30);
步骤2:
#每个人每科是否及格
select name,score < 60 from stu;
运行结果如下:
步骤3:
#每个人不及格科目数量
select name, sum(score < 60) from stu group by name;
运行结果:
步骤4:
#每个人不及格科目数量和平均分
select name,sum(score < 60),avg(score) from stu group by name;
运行结果:
步骤5:
#不及格科目数量大于等于2 的学生的平均分
select name,sum(score < 60) as gk,avg(score) as average from stu group by name having gk >= 2
注:要把表的列当作变量使用