学生表分为小学、初中、高中,小学又分为在校生和往届生,如何将学校表和学生表关联查询每年的毕业生
时间: 2024-01-20 08:03:31 浏览: 39
假设学校表的结构如下:
```
CREATE TABLE schools (
id INT PRIMARY KEY,
name VARCHAR(50)
);
```
假设学生表的结构如下:
```
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
school_id INT,
grade VARCHAR(10),
is_graduated BOOLEAN
);
```
其中,`grade`字段表示学生所在的年级,例如小学一年级可以表示为`"小学1"`、初中二年级可以表示为`"初中2"`,`is_graduated`字段表示学生是否毕业。
要查询每年的毕业生,可以按照年份进行分组,然后统计每个年份的毕业生人数。查询语句如下:
```
SELECT YEAR(graduated_date) AS year, COUNT(*) AS count
FROM (
SELECT s.id, s.name, s.school_id, s.grade, s.is_graduated,
CONCAT(schools.name, ' ', s.grade) AS school_grade,
CONCAT(YEAR(NOW()), '-06-30') AS graduated_date
FROM students s
JOIN schools ON s.school_id = schools.id
WHERE s.is_graduated = 1
) AS graduated_students
GROUP BY YEAR(graduated_date)
```
这里假设每个学年的毕业日期是6月30日。查询语句的思路是:
1. 首先从学生表中筛选出已经毕业的学生,同时将学校名称和年级组合成一个新的字段`school_grade`。
2. 然后将筛选出来的结果作为子查询,再次进行处理。
3. 将当前年份和毕业日期拼接成一个新的日期字段`graduated_date`。
4. 最后按照`graduated_date`的年份进行分组,统计每个年份的毕业人数。
注意,这里的子查询是为了方便处理数据,可以根据实际情况进行优化。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)