MySql某一列累计查询

问题:有一列数据,需要累计显示出来

比如:id  salary   查询结果:id  salary  sumSalary

1  10000                     1  10000  10000

  2  20000                     2  20000  30000

      3  30000                     3  30000  60000

解决方案

1、使用自定义变量

 ①用 Set 定义变量

mysql> set @sumSalary := 0;

mysql> select id,salary,(@sumSalary := @sumSalary + salary) as sum from tbl_stu order by id asc;

②不适用 Set 定义变量,使用 join

mysql> select id,salary,(@sumSalary := @sumSalary + salary) as sum from tbl_stu a join (select @sumSalary := 0) b order by id asc;

2、使用子查询

   mysql> select id,salary,(select sum(salary) from tbl_stu b where b.id <= a.id) sumSalary from tbl_stu a order by id asc;

原文:https://stackoverflow.com/questions/2563918/create-a-cumulative-sum-column-in-mysql

时间: 2024-10-21 19:02:18

MySql某一列累计查询的相关文章

mysql查询结果多列拼接查询

mysql查询结果多列拼接查询,主要场景是,列表中其中一列涉及另外一张表的多条数据,但是我只需要多条数据中的其中某一列(主子表场景) 关键字:GROUP_CONCAT sql语句如下: SELECT r.id,b.NAME AS group_name,GROUP_CONCAT( a.`name` ) province_name FROM config_rule AS r LEFT JOIN group AS g ON ( r.svg_id = g.id ) LEFT JOIN config_ru

Mysql 列转行统计查询 、行转列统计查询

之前看过一篇博文写得非常好,看后就很容易让人理解,博文地址为:http://www.cnblogs.com/lhj588/p/3315876.html 最近在群里又碰到一个朋友说起,于是记录一下: 假设表名为t.表里有六个字段p1,p2,p3,s1,s2,s3 现在想得到 p1=100 时s1值的总和 p2=100 时s2值的总和 p3=100 时s3值的总和 创建表: CREATE TABLE `t` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `s

mysql合并同一列的值

我有如下的查询条件显示: 我希望最终显示的效果如图: 将id相同的group_name合并到一行.实现方法:在group_name前面加关键字group_concat.然后在sql语句最后加上group by id. group_concat能将同一列的值以逗号分隔开,拼成一个字符串.(mysql自带) 第一个图的sql语句如下: SELECT tr.id ,tig.group_name FROM tj_record tr INNER JOIN tj_item_group_ex tige ON

mysql之多列索引

mysql的多列索引是经常会遇到的问题,怎样才能有效命中索引,是本文要探讨的重点. 多列索引使用的Btree,也就是平衡二叉树.简单来说就是排好序的快速索引方式.它的原则就是要遵循左前缀索引. 多个索引从左边往右都使用上,才能使用到整个多列索引. 下面我先建立一个简单的表做实验: create table t6 ( c1 char(1) not null default '', c2 char(1) not null default '', c3 char(1) not null default

关于MySQL 通用查询日志和慢查询日志分析

MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询 (1)通用查询日志 在学习通用日志查询时,需要知道两个数据库中的常用命令: 1) showvariables like '%version%'; 效果图如下: 上述命令,显示当前数据库中与版本号相关的东西.

MySQL 通用查询日志和慢查询日志分析

MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句.2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询 (1)通用查询日志 在学习通用日志查询时,需要知道两个数据库中的常用命令: 1) show variables like '%version%'; mysql> show variables like '%ve

MySQL分组与连表查询

MySQL分组与连表查询 2019-08-23 1.MySQL分组 按照某一个属性降数据进行分组,通过关键字:group by:通常分组会与聚合函数联合使用. 聚合函数常用的有:min,max,sum,avg,count. 比如统计男女生人数 --性别表 create table gendertable( id int auto_increment primary key, gender char(10) )engine=innodb default charset=utf8; insert i

MySQL中常用操作--子查询

子查询就是SELECT 查询是另一个SELECT的附属,  此时, MySQL从最内层的查询开始, 再向外向上查询, 接着最外层的父查询被执行, 它的结果也指定给父查询. 带IN的子查询:只有子查询返回的结果列中包含一个值时, 比较运算符才适用. 假如一个子查询的返回结果集是值的列表, 这时比较运算符就必须用关键字IN代替IN运算符可以检测结果集中是否存在某个特定的值, 如果检测成功就执行外部的查询. mysql> select * from stu -> ; +----+----------

MySQL ORDER BY:对查询结果进行排序

在 MySQL SELECT 语句中,ORDER BY 子句主要用来将结果集中的数据按照一定的顺序进行排序. 其语法格式为: ORDER BY {<列名> | <表达式> | <位置>} [ASC|DESC] 语法说明如下. 1) 列名 指定用于排序的列.可以指定多个列,列名之间用逗号分隔. 2) 表达式 指定用于排序的表达式. 3) 位置 指定用于排序的列在 SELECT 语句结果集中的位置,通常是一个正整数. 4) ASC|DESC 关键字 ASC 表示按升序分组,