第七章 组合查询

组合查询也就是查询嵌套

 

练习:

 

1、查询入学年龄在18-20的女生或者未输入性别的,实际年龄小的要排在后面
SELECT * FROM t_stu WHERE s_age BETWEEN 18 AND 20 AND s_sex ='女' OR s_sex IS NULL ORDER BY YEAR(NOW(2012-04-26))-YEAR(s_birthday) DESC


2、查询班级名称、学生姓名、性别、缴费(要求显示单位:元),相同班级的要放在一起,姓名根据字典顺序排列。
SELECT s_c_id,(SELECT c_name FROM t_class WHERE c_id=s_c_id) 班级名称,s_name,s_sex,CONCAT(s_moeny,'元')  缴费 FROM t_stu ORDER BY s_c_id,s_name;


3、查询各班名称和人数
SELECT c_name,(SELECT COUNT(s_c_id) FROM t_stu WHERE s_c_id=c_id) FROM t_class

4、查询各班名称和人数,但人数必须不少于2,人数多的放在前面
SELECT c_name,(SELECT COUNT(s_c_id) FROM t_stu WHERE s_c_id=c_id) FROM t_class WHERE (SELECT COUNT(s_c_id) FROM t_stu WHERE s_c_id=c_id) >=2

5、查询1988年出生的有哪些学生。
SELECT s_name FROM t_stu WHERE s_birthday LIKE'1988%'

6、查询男生和女生人数,没有输入性别的当作男
SELECT s_sex,COUNT(s_name) FROM t_stu WHERE s_sex ='女'
UNION
SELECT s_sex,COUNT(s_name) FROM t_stu WHERE s_sex ='男'OR s_sex IS NULL

7、查询没有人员的班级。
SELECT c_name FROM t_class WHERE NOT EXISTS(SELECT s_id FROM t_stu WHERE s_c_id=c_id)

8、查询入学年龄在20以上(不包含20)的同学信息
SELECT (SELECT c_name FROM t_class WHERE s_c_id=c_id) 班级,s_name 姓名,s_sex 性别,s_birthday 出生日期,s_age 入学年龄,s_money 缴费 FROM t_stu WHERE s_age > 20

9、查询班级平均入学年龄在20以上的班级
SELECT c_name FROM t_class WHERE (SELECT AVG(s_age) FROM t_stu WHERE c_id=s_c_id ) >20

转载于:https://www.cnblogs.com/dcmlove/archive/2012/04/27/2472929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值