sql - group & having example

problem:

    there is table store course score of students, now write a sql to query student who has at least 2 course failed, means score<60,

sql: (mysql)

# drop table
drop table if exists score;

# create table
create table score(
	id integer AUTO_INCREMENT primary key,
	student_num varchar(32) not null,
	course_name varchar(64),
	course_score float,
	unique key(student_num, course_name)
) engine=MYISAM DEFAULT CHARSET=utf8;

# clear data
truncate score;

# prepare data
insert into score(student_num, course_name, course_score)
values
("001", "English", 100),
("001", "Math", 100),
("002", "English", 90),
("002", "Math", 90),
("003", "English", 20),
("003", "Math", 20),
("003", "Music", 20),
("004", "English", 20),
("004", "Math", 20),
("005", "English", 70),
("005", "Math", 30);

# query
select student_num, count(course_name) as cc
from score
where course_score < 60
group by student_num having cc>=2

猜你喜欢

转载自kuchaguangjie.iteye.com/blog/1933651