1、查询所有学生信息,显示的内容包含:编号,姓名,班级,性别,出生日期,年龄,成绩
SELECT id,NAME,clazz,gender,score,bir,TIMESTAMPDIFF(YEAR,bir,NOW()) age FROM info;
2、查询每个班的学生人数各有几人
SELECT class, COUNT(*) AS student_number
FROM info
GROUP BY class;
3、查询每个班考试合格的人数
SELECT class, COUNT(*) as num_pass
FROM info
WHERE score >= 60
GROUP BY class;
///
这个查询语句假设了一个名为"student"的表,其中包含了学生的班级名称(class_name)和考试分数(score)两个字段。查询将会统计每个班级中考试分数大于等于60的学生人数,并将结果按班级名称分组显示。
4、查询每个班考试合格的人数,并且按照每个班考试合格人数升序排列
SELECT class, COUNT(*) as num_pass
FROM info
WHERE score >= 60
GROUP BY class
ORDER BY num_pass ASC;
/
这个查询语句与之前的查询语句类似,但是在最后添加了ORDER BY子句,用于按照每个班级的及格人数(num_pass)进行升序排序。通过执行这个查询语句,你将会获得每个班考试合格的人数,并且按照每个班考试合格人数升序排列的结果。
5、查询平均分在75分以上的班级信息,并且升序排序
SELECT class, AVG(score) as avg_score
FROM info
GROUP BY class
HAVING avg_score >= 75
ORDER BY class ASC;
/
这个查询语句首先使用GROUP BY子句按照班级名称对学生进行分组,并使用AVG函数计算每个班级的平均分。然后使用HAVING子句筛选出平均分大于等于75的班级。最后使用ORDER BY子句按照班级名称进行升序排序。通过执行这个查询语句,你将会获得满足条件的班级信息,并且按照班级名称升序排列的结果。
6、查询1994,1997,1986这几个年份中出生的学生信息
SELECT *
FROM info
WHERE YEAR (bir) IN (1986, 1994, 1997);
//
这个查询语句使用YEAR函数从sbirthday字段中提取出生年份,并使用IN操作符筛选出符合指定年份(1986、1994和1997)的学生信息。执行这个查询语句后,将会返回符合条件的学生信息的列表。
7、查询22岁---25岁区间的学生信息
SELECT *
FROM info
WHERE YEAR(CURDATE()) - YEAR(bir) BETWEEN 22 AND 25
//(这个查询语句使用CURDATE()函数获取当前日期,并使用YEAR函数从出生日期中提取年份。然后通过计算当前年份与出生年份的差值,得到学生的年龄。最后使用BETWEEN操作符筛选出年龄在22至25岁之间的学生信息。执行这个查询语句后,将会返回符合条件的学生信息。请注意,这个查询语句假设student表中的出生日期字段名为sbirthday。)
8、查询不在22-25这个区间的数据
SELECT *
FROM info
WHERE YEAR(CURDATE()) - YEAR(bir) NOT BETWEEN 22 AND 25
//
这个查询语句使用CURDATE()函数获取当前日期,并使用YEAR函数从出生日期中提取年份。然后通过计算当前年份与出生年份的差值,得到学生的年龄。最后使用BETWEEN操作符筛选出年龄在22至25岁之间的学生信息。执行这个查询语句后,将会返回符合条件的学生信息。请注意,这个查询语句假设student表中的出生日期字段名为sbirthday。
9、查询姓名三个字的,并且考试合格20岁以上的男生信息
SELECT *
FROM info
WHERE NAME LIKE '___' AND gender = '男' AND score >= 60 AND YEAR(CURDATE()) - YEAR(bir) > 20;
/
这个查询语句假设students表包含学生的信息,其中包含字段name(姓名)、gender(性别)、score(考试成绩)和birthdate(出生日期)。
查询语句中的LIKE '____'用于匹配任意三个字的姓名。gender = '男'用于筛选出男生。score >= 60用于筛选出考试成绩大于等于60分的学生。YEAR(CURDATE()) - YEAR(birthdate) > 20用于计算学生的年龄是否大于20岁。执行这个查询语句后,将会返回符合条件的学生信息。
10、查询不是1994,1997,1986这几个年份出生的学生信息
SELECT *
FROM info
WHERE YEAR (bir) NOT IN (1986, 1994, 1997);
11、查询20岁上的学生,每个班级考试合格的男女生人数各有多少人
SELECT class,
COUNT(CASE WHEN gender = '男' AND score >= 60 THEN 1 END) AS boy_num,
COUNT(CASE WHEN gender = '女' AND score >= 60 THEN 1 END) AS girl_num
FROM info
WHERE YEAR(CURDATE()) - YEAR(bir) > 20
GROUP BY class;
//查询语句使用了WHERE子句来筛选出20岁以上的学生。然后使用CASE语句在计数时根据性别和成绩条件进行条件判断,并使用COUNT函数进行计数。最后使用GROUP BY子句按班级名称进行分组,以便统计每个班级考试合格的男女生人数。执行这个查询语句后,将会返回每个班级考试合格的男女生人数。
12、查询年龄最大的前5名学员信息
SELECT *
FROM info
ORDER BY YEAR(CURDATE()) - YEAR(bir) DESC
LIMIT 5;
//上述查询语句中,使用了YEAR(CURDATE()) - YEAR(birthdate)来计算学员的年龄,然后按照年龄降序排序(从大到小),并使用LIMIT 5限制结果集为前5条记录。
请注意,这种计算年龄的方式假设出生日期是准确的,并且没有考虑闰年和日期格式的问题。如果需要更精确的计算方式,你可能需要根据你的实际情况进行修改。
13、查询生日为每一个月最后一天出生的人员信息,并且按年龄从大到小排列
SELECT *
FROM your_table
WHERE DATE_FORMAT(birthdate, '%m-%d') = DATE_FORMAT(LAST_DAY(birthdate), '%m-%d')
ORDER BY YEAR(CURDATE()) - YEAR(birthdate) DESC;
///
在上述查询语句中,假设你的表名为"your_table",并且包含一个名为"birthdate"的字段表示出生日期。DATE_FORMAT(birthdate, '%m-%d')将出生日期转换为月-日的格式,然后与DATE_FORMAT(LAST_DAY(birthdate), '%m-%d')进行比较,以确定是否是每一个月的最后一天。如果匹配,将返回符合条件的记录。
最后的ORDER BY子句使用计算年龄的公式YEAR(CURDATE()) - YEAR(birthdate)来按年龄从大到小进行排序。
请注意,上述查询语句假设你的表结构和日期格式与示例相匹配。如果实际情况不同,请相应地调整查询语句以适应你的数据结构和日期格式。
标签:语句,info,班级,数据库,练习,查询,YEAR,SELECT From: https://blog.csdn.net/Excellent_tian/article/details/142495429