累加sql
先上表結構:
spa
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;
數據:3d
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');
想要的結果爲季度金額的累加值:code
這裏利用錯位自關聯來實現,先看關聯效果blog
select * from abc a JOIN abc b ON a.jidu >= b.jidu;
下面就好辦了,實現語句爲:class
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;
累減select
仍是上面那個表,要的結果爲每季度的金額差額:im
仍是自關聯,先看關聯效果:數據
select * from abc a left JOIN abc b ON a.jidu = b.jidu+1 ORDER BY a.jidu;
實現的sql:db
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;
完事,若有不對的地方請指正。