查询所有学生

从students表中查询所有学生的姓名、年龄和年级信息。

-- 提示:使用SELECT语句 SELECT name, age, grade FROM students;

条件查询

查询年龄大于20岁的所有学生信息。

-- 提示:使用WHERE子句 SELECT * FROM students WHERE age > 20;

排序查询

查询所有学生,按年龄从大到小排序。

-- 提示:使用ORDER BY SELECT * FROM students ORDER BY age DESC;

模糊查询

查询姓名中包含"明"字的学生。

-- 提示:使用LIKE SELECT * FROM students WHERE name LIKE '%明%';

统计学生人数

统计每个年级的学生人数,并按人数降序排列。

-- 提示:使用GROUP BY和COUNT SELECT grade, COUNT(*) as count FROM students GROUP BY grade ORDER BY count DESC;

计算平均分

计算每个科目的平均分,只显示平均分大于75的科目。

-- 提示:使用GROUP BY和HAVING SELECT subject, AVG(score) as avg_score FROM exam_results GROUP BY subject HAVING AVG(score) > 75;

多条件查询

查询年龄在18到22岁之间,且年级为大二或大三的学生。

-- 提示:使用AND、OR和BETWEEN SELECT * FROM students WHERE age BETWEEN 18 AND 22 AND grade IN ('大二', '大三');

字符串处理

将学生的姓和名连接成全名,并转换为大写。

-- 提示:使用CONCAT和UPPER SELECT UPPER(CONCAT(first_name, ' ', last_name)) as full_name FROM students;

复杂统计

查询每个年级的学生人数、平均年龄、最高分和最低分。

-- 提示:使用多个聚合函数 SELECT grade, COUNT(*) as student_count, AVG(age) as avg_age, MAX(score) as max_score, MIN(score) as min_score FROM students GROUP BY grade;

条件分类

根据分数将学生分为优秀(>=90)、良好(80-89)、及格(60-79)、不及格(<60)四个等级。

-- 提示:使用CASE WHEN SELECT name, score, CASE WHEN score >= 90 THEN '优秀' WHEN score >= 80 THEN '良好' WHEN score >= 60 THEN '及格' ELSE '不及格' END as grade FROM exam_results;

排名查询

查询每个年级成绩前3名的学生。

-- 提示:使用子查询或窗口函数 SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY grade ORDER BY score DESC) as rank FROM students ) t WHERE rank <= 3;

数据去重

查询选修了至少3门课程的学生姓名和选修课程数。

-- 提示:使用GROUP BY和HAVING SELECT student_name, COUNT(DISTINCT course_id) as course_count FROM enrollments GROUP BY student_name HAVING COUNT(DISTINCT course_id) >= 3;