mysql之累加

SET @add_sal=0;  
SELECT deptno, empno, ename, sal, @add_sal := @add_sal + sal AS add_sal
  FROM emp
 ORDER BY empno;

+--------+-------+--------+------+---------+
| deptno | empno | ename  | sal  | add_sal |
+--------+-------+--------+------+---------+
|     20 |  7369 | SMITH  |  800 |     800 |
|     30 |  7499 | ALLEN  | 1600 |    2400 |
|     30 |  7521 | WARD   | 1250 |    3650 |
|     20 |  7566 | JONES  | 2975 |    6625 |
|     30 |  7654 | MARTIN | 1250 |    7875 |
|     30 |  7698 | BLAKE  | 2850 |   10725 |
|     10 |  7782 | CLARK  | 2450 |   13175 |
|     20 |  7788 | SCOTT  | 3000 |   16175 |
|     10 |  7839 | KING   | 5000 |   21175 |
|     30 |  7844 | TURNER | 1500 |   22675 |
|     20 |  7876 | ADAMS  | 1100 |   23775 |
|     30 |  7900 | JAMES  |  950 |   24725 |
|     20 |  7902 | FORD   | 3000 |   27725 |
|     10 |  7934 | MILLER | 1300 |   29025 |
+--------+-------+--------+------+---------+
14 rows in set (0.01 sec)


SET @add_sal=0;     
SET @last_deptno=-1;    
SELECT deptno,  
       empno,  
       ename,  
       sal,  
       IF(@last_deptno = deptno, @rn := @rn + 1, @rn := 1) AS rn,  
       IF(@last_deptno = deptno, @add_sal := @add_sal + sal, @add_sal := sal) AS add_sal,  
       @last_deptno := deptno AS last_deptno  
  FROM emp  
 ORDER BY deptno, sal;

+--------+-------+--------+------+------+---------+-------------+
| deptno | empno | ename  | sal  | rn   | add_sal | last_deptno |
+--------+-------+--------+------+------+---------+-------------+
|     10 |  7934 | MILLER | 1300 |    1 |    1300 |          10 |
|     10 |  7782 | CLARK  | 2450 |    2 |    3750 |          10 |
|     10 |  7839 | KING   | 5000 |    3 |    8750 |          10 |
|     20 |  7369 | SMITH  |  800 |    1 |     800 |          20 |
|     20 |  7876 | ADAMS  | 1100 |    2 |    1900 |          20 |
|     20 |  7566 | JONES  | 2975 |    3 |    4875 |          20 |
|     20 |  7788 | SCOTT  | 3000 |    4 |    7875 |          20 |
|     20 |  7902 | FORD   | 3000 |    5 |   10875 |          20 |
|     30 |  7900 | JAMES  |  950 |    1 |     950 |          30 |
|     30 |  7654 | MARTIN | 1250 |    2 |    2200 |          30 |
|     30 |  7521 | WARD   | 1250 |    3 |    3450 |          30 |
|     30 |  7844 | TURNER | 1500 |    4 |    4950 |          30 |
|     30 |  7499 | ALLEN  | 1600 |    5 |    6550 |          30 |
|     30 |  7698 | BLAKE  | 2850 |    6 |    9400 |          30 |
+--------+-------+--------+------+------+---------+-------------+
14 rows in set (0.05 sec)


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,可以使用用户变量来实现累加查询。用户变量是一种在查询过程中可以存储临时值的变量。下面是一个示例查询,展示了如何使用用户变量进行累加计算: ``` SELECT reg_time, daily, @i:=@i+daily AS cumulative_quantity FROM ( SELECT reg_time, COUNT(user_id) AS daily FROM user GROUP BY reg_time ) a, (SELECT @i:=0) b; ``` 在这个查询中,我们首先使用子查询计算每天的用户数量,并将结果存储在daily列中。然后,我们使用用户变量@i来进行累加计算,将每天的数量累加到前一天的累计数量上,并将结果存储在cumulative_quantity列中。 请注意,为了确保用户变量的初始值为0,我们在查询中使用了一个额外的子查询`(SELECT @i:=0) b`。 这样,你就可以通过这个查询得到每天的用户数量以及累计总人数了。 #### 引用[.reference_title] - *1* *3* [mysql如何进行累加计算](https://blog.csdn.net/qq_35067322/article/details/100579006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MySQL实现累加、累乘、累减、累除](https://blog.csdn.net/gzjgzj12345/article/details/129415143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值