计算出每年在校人数,写出SQL语句

1.有一个招生人数表,记录的是每年招生人数和入学学生的学制
CREATE TABLE admit (
id int(11) NOT NULL AUTO_INCREMENT,
year int(255) DEFAULT NULL COMMENT '入学年度',
num int(255) DEFAULT NULL COMMENT '人数',
stu_len varchar(255) DEFAULT NULL COMMENT '学制',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='录取人数';

id year num stu_len
1 2018 2000 3
2 2019 2000 3
3 2020 1000 4
4 2020 2000 3
计算出每年在校人数,写出SQL语句:

mysql,我试试吧

SELECT
t2.year,
sum(case when t2.year>=t.year and t2.year <= (t.year + cast(t.stu_len as UNSIGNED INTEGER)) then t.num ELSE 0 end ) num
FROM
admit t,
(SELECT
year
FROM
admit
GROUP BY
year) t2
GROUP BY
t2.year;

SELECT year, SUM(num) AS enrolled_num
FROM admit
GROUP BY year;

使用leg()函数取前stu_len-1行的数据一起求和。
select year,num+sum(leg(num,stu_len-1,null) over(order by year)) year_num from admit

可以使用 GROUP BY 子句和聚合函数 SUM() 计算出每年的在校人数,SQL语句如下:

SELECT year, SUM(num) AS total_num 
FROM admit 
GROUP BY year;

该查询语句将 admit 表按照 year 字段进行分组,然后针对每年数据计算总人数,返回一个包含年份和总人数的结果集。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    答案:

    是的,我需要计算每个年份在校人数的总和。

    根据您的要求,我会使用以下 SQL 语句来解决这个问题:

    SELECT year, SUM(num) AS total_num 
    FROM tablename 
    GROUP BY year;
    

    在这条 SQL 语句中,您需要替换 tablename 为您创建的招生人数表的实际表名。

    这条语句的实现步骤如下:

    1. 使用 SELECT 语句选择您需要输出的列,这里我们选择 yearnum(每个年份的招生人数)。
    2. 使用 SUM() 聚合函数将 num 列的值相加,获取每个年份的在校人数总和。
    3. 使用 AS 关键字将聚合结果的别名命名为 total_num,以便更好地阅读查询结果。
    4. 使用 GROUP BY 语句按照 year 列对结果分组,以获得每个年份的在校人数总和。
    5. 最后,运行 SQL 查询获取查询结果。

    希望这个解决方案能帮到您。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^