先上表结构:

CREATE TABLE `abc` (
  `jidu` int(11) NOT NULL AUTO_INCREMENT,
  `jine` int(11) DEFAULT NULL,
  PRIMARY KEY (`jidu`)
) ENGINE=InnoDB AUTO_INCREMENT=14270 DEFAULT CHARSET=utf8;

数据:

INSERT INTO `abc` (`jidu`, `jine`) VALUES ('1', '100');
INSERT INTO `abc` (`jidu`, `jine`) VALUES ('2', '200');
INSERT INTO `abc` (`jidu`, `jine`) VALUES ('3', '300');
INSERT INTO `abc` (`jidu`, `jine`) VALUES ('4', '300');

想要的结果为季度金额的累加值:

mysql累加、累减

 

 

 

这里利用错位自关联来实现,先看关联效果

select * from abc a JOIN abc b ON a.jidu >= b.jidu;

mysql累加、累减

 

 

 下面就好办了,实现语句为:

select a.jidu,a.jine,sum(b.jine) as leiji
from abc a JOIN abc b ON a.jidu >= b.jidu 
GROUP BY a.jidu ORDER BY jidu;

 

累减

还是上面那个表,要的结果为每季度的金额差额:

mysql累加、累减

 

 

 还是自关联,先看关联效果:

select * from abc a left JOIN abc b ON a.jidu = b.jidu+1 ORDER BY a.jidu;

mysql累加、累减

 

 实现的sql:

select a.jidu,a.jine,ifnull(a.jine-b.jine,a.jine) as cha 
from abc a left JOIN abc b ON a.jidu = b.jidu+1 ORDER BY a.jidu;

完事,如有不对的地方请指正。

相关文章:

  • 2021-09-23
  • 2021-10-04
  • 2021-11-16
  • 2022-01-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-20
猜你喜欢
  • 2022-01-28
  • 2022-02-04
  • 2022-12-23
  • 2021-12-16
  • 2022-01-22
  • 2021-12-19
  • 2021-12-13
相关资源
相似解决方案