用MySQL练习GROUP BY、ORDER BY和LIMIT子句的使用: 1)查找student中男生和女生的人数; 2)查找选修了2号课程的学生的学号及其成绩,查询结果按成绩降序排序; 3)返回student表中的前3位同学的信息。
时间: 2024-10-15 08:27:21 浏览: 40
在MySQL中,GROUP BY、ORDER BY和LIMIT子句用于处理分组数据、排序和限制结果集。
1) 要查找学生中男生和女生的人数,可以使用以下SQL查询:
```sql
SELECT gender, COUNT(*) AS count
FROM student
GROUP BY gender;
```
这将按性别对数据进行分组,并计算每个性别的记录数量。
2) 查找选修了2号课程的学生的学号和成绩,按照成绩降序排列,可以这样做:
```sql
SELECT student_id, score
FROM student
JOIN course_taken ON student.student_id = course_taken.student_id
WHERE course_number = 2
ORDER BY score DESC;
```
这里假设有一个course_taken表关联学生和课程信息。
3) 返回student表中的前3位同学的信息,可以用LIMIT子句配合ORDER BY:
```sql
SELECT *
FROM student
ORDER BY student_id ASC
LIMIT 3;
```
这将返回学生表中的前三个最早的学号(默认升序),如果需要特定字段如姓名,则需加入对应字段到ORDER BY中。
相关问题
GROUP BY、HAVING和ORDER BY 子句的使用: (1)查找student中男生和女生的人数。 (2)查找选修了koo1课程的学生学号和及其考试成绩,结果按成绩降序排列。 (3)查找考试成绩平均分>85分的课程号和考试平均分
GROUP BY, HAVING, 和 ORDER BY 是 SQL 查询中常用的子句,用于对数据进行分组、筛选和排序。
1. 使用 GROUP BY 子句查找学生中男生和女生的人数,可以按照性别字段(如 gender)进行分组:
```sql
SELECT gender, COUNT(*) AS student_count
FROM student
GROUP BY gender;
```
这将返回每个性别的学生人数。
2. 查找选修了 koo1 课程的学生学号和考试成绩,并按成绩降序排列,需要结合 WHERE 条件和 ORDER BY 子句:
```sql
SELECT student_id, score
FROM students
INNER JOIN courses ON students.course_id = koo1.course_id
WHERE course_name = 'koo1'
ORDER BY score DESC;
```
这会列出所有选修了 koo1 课程学生的成绩,从高分到低分。
3. 计算考试成绩平均分并找出平均分大于 85 分的课程号和其平均分,同样需要 GROUP BY 和 HAVING:
```sql
SELECT course_id, AVG(score) as average_score
FROM exams
GROUP BY course_id
HAVING AVG(score) > 85;
```
这将显示所有课程中成绩平均分超过 85 的课程ID及其平均分。
阅读全文