登录
首页 >  数据库 >  MySQL

MySQL 中如何按组计算排除最新记录后其他记录的数值总和?

时间:2024-11-04 18:04:03 280浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《MySQL 中如何按组计算排除最新记录后其他记录的数值总和?》,很明显是关于数据库的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

MySQL 中如何按组计算排除最新记录后其他记录的数值总和?

mysql中按组计算排除最新记录后其他记录和

问题:给定包含时间和类型的以下数据表:

create table c (
  time timestamp,
  type varchar(255),
  num int
);

insert into c values
('2023-01-01 00:00:00', 'a', 10),
('2023-01-01 00:00:00', 'b', 12),
('2023-01-02 00:00:00', 'a', 15),
('2023-01-02 00:00:00', 'b', 18),
('2023-01-03 00:00:00', 'a', 20),
('2023-01-03 00:00:00', 'b', 22);

如何写一个mysql查询,按type分组,计算排除最新一条记录后其余记录num值的总和?

解答:

SELECT t.type, SUM(t.num)
FROM (
    SELECT type, num, ROW_NUMBER() OVER (PARTITION BY type ORDER BY time DESC ) AS row_num
    FROM C
) t
WHERE t.row_num != 1
GROUP BY t.type

此查询包含以下步骤:

  1. 使用row_number()函数为每个type中的记录分配一个基于按时间降序排序的序列号。
  2. 使用子查询创建临时表t,其中包含类型、数字和其他列(如原始表中不存在的row_num)。
  3. 从t表中选择最新的记录(row_num不等于1),即排除最新记录。
  4. 按type分组并计算num的总和。

以上就是《MySQL 中如何按组计算排除最新记录后其他记录的数值总和?》的详细内容,更多关于的资料请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>