mysql分组查询习题
时间: 2023-11-09 12:00:52 浏览: 42
好的,针对您的问题,以下是一道mysql分组查询的练习题:
有一张学生选课表,包含三个字段:学生id,课程id,成绩。请编写一条SQL语句,查询出每门课程的平均成绩。
答案:
```
SELECT 课程id, AVG(成绩) AS 平均成绩 FROM 学生选课表 GROUP BY 课程id;
```
相关问题
MySQL单表查询练习题
好的,下面是一些MySQL单表查询练习题:
1. 查询一个表中的所有数据:
```
SELECT * FROM table_name;
```
2. 查询一个表中指定列的数据:
```
SELECT col1, col2, col3 FROM table_name;
```
3. 查询一个表中指定列的数据,并按照指定的列排序:
```
SELECT col1, col2, col3 FROM table_name ORDER BY col1 DESC;
```
4. 查询一个表中满足指定条件的数据:
```
SELECT * FROM table_name WHERE col1 = 'value';
```
5. 查询一个表中指定列的数据,并按照指定的列排序,同时满足指定条件:
```
SELECT col1, col2, col3 FROM table_name WHERE col1 = 'value' ORDER BY col2 ASC;
```
6. 查询一个表中指定列的数据,并限制返回的行数:
```
SELECT col1, col2, col3 FROM table_name LIMIT 10;
```
7. 查询一个表中指定列的数据,并按照指定的列排序,同时限制返回的行数:
```
SELECT col1, col2, col3 FROM table_name ORDER BY col1 DESC LIMIT 5;
```
8. 查询一个表中指定列的数据,并进行分组统计:
```
SELECT col1, COUNT(col2) FROM table_name GROUP BY col1;
```
以上是一些MySQL单表查询的练习题,希望对你有所帮助!
mysql 窗口函数练习题
MySQL窗口函数是MySQL 8的新特性,它可以在查询结果中进行分组、排序和聚合操作。窗口函数可以在查询结果中为每一行计算一个值,并且可以根据指定的排序规则对结果进行排序。
对于给定的MySQL窗口函数练习题,我们需要找出每个项目中经验最丰富的员工。可以使用RANK()函数来实现。以下是解决该问题的MySQL查询语句:
```sql
SELECT project_id, employee_id
FROM (
SELECT p.project_id, p.employee_id, RANK() OVER (PARTITION BY p.project_id ORDER BY e.experience_years DESC) AS r
FROM Project p
LEFT JOIN Employee e ON p.employee_id = e.employee_id
) AS T
WHERE r = 1;
```
在这个查询中,我们首先使用LEFT JOIN将Project表和Employee表连接起来。然后,使用RANK()函数对每个项目的员工按照经验年限进行降序排序,并为每个员工分配一个排名。最后,我们将排名为1的结果筛选出来,即每个项目中经验最丰富的员工。
这个查询语句可以帮助我们找到每个项目中经验最丰富的员工。窗口函数的灵活性和强大功能使得解决类似问题变得更加简单和高效。[1][2][3]