Mysql中模拟分析函数

来源:互联网 发布:cba选秀体测数据 编辑:程序博客网 时间:2024/04/29 08:10
[sql] view plain copy
  1. SET @add_sal=0;    
  2. SELECT deptno, empno, ename, sal, @add_sal := @add_sal + sal AS add_sal  
  3.   FROM emp  
  4.  ORDER BY empno;  
  5.   
  6. +--------+-------+--------+------+---------+  
  7. | deptno | empno | ename  | sal  | add_sal |  
  8. +--------+-------+--------+------+---------+  
  9. |     20 |  7369 | SMITH  |  800 |     800 |  
  10. |     30 |  7499 | ALLEN  | 1600 |    2400 |  
  11. |     30 |  7521 | WARD   | 1250 |    3650 |  
  12. |     20 |  7566 | JONES  | 2975 |    6625 |  
  13. |     30 |  7654 | MARTIN | 1250 |    7875 |  
  14. |     30 |  7698 | BLAKE  | 2850 |   10725 |  
  15. |     10 |  7782 | CLARK  | 2450 |   13175 |  
  16. |     20 |  7788 | SCOTT  | 3000 |   16175 |  
  17. |     10 |  7839 | KING   | 5000 |   21175 |  
  18. |     30 |  7844 | TURNER | 1500 |   22675 |  
  19. |     20 |  7876 | ADAMS  | 1100 |   23775 |  
  20. |     30 |  7900 | JAMES  |  950 |   24725 |  
  21. |     20 |  7902 | FORD   | 3000 |   27725 |  
  22. |     10 |  7934 | MILLER | 1300 |   29025 |  
  23. +--------+-------+--------+------+---------+  
  24. 14 rows in set (0.01 sec)  


[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. SET @add_sal=0;       
  2. SET @last_deptno=-1;      
  3. SELECT deptno,    
  4.        empno,    
  5.        ename,    
  6.        sal,    
  7.        IF(@last_deptno = deptno, @rn := @rn + 1, @rn := 1) AS rn,    
  8.        IF(@last_deptno = deptno, @add_sal := @add_sal + sal, @add_sal := sal) AS add_sal,    
  9.        @last_deptno := deptno AS last_deptno    
  10.   FROM emp    
  11.  ORDER BY deptno, sal;  
  12.   
  13. +--------+-------+--------+------+------+---------+-------------+  
  14. | deptno | empno | ename  | sal  | rn   | add_sal | last_deptno |  
  15. +--------+-------+--------+------+------+---------+-------------+  
  16. |     10 |  7934 | MILLER | 1300 |    1 |    1300 |          10 |  
  17. |     10 |  7782 | CLARK  | 2450 |    2 |    3750 |          10 |  
  18. |     10 |  7839 | KING   | 5000 |    3 |    8750 |          10 |  
  19. |     20 |  7369 | SMITH  |  800 |    1 |     800 |          20 |  
  20. |     20 |  7876 | ADAMS  | 1100 |    2 |    1900 |          20 |  
  21. |     20 |  7566 | JONES  | 2975 |    3 |    4875 |          20 |  
  22. |     20 |  7788 | SCOTT  | 3000 |    4 |    7875 |          20 |  
  23. |     20 |  7902 | FORD   | 3000 |    5 |   10875 |          20 |  
  24. |     30 |  7900 | JAMES  |  950 |    1 |     950 |          30 |  
  25. |     30 |  7654 | MARTIN | 1250 |    2 |    2200 |          30 |  
  26. |     30 |  7521 | WARD   | 1250 |    3 |    3450 |          30 |  
  27. |     30 |  7844 | TURNER | 1500 |    4 |    4950 |          30 |  
  28. |     30 |  7499 | ALLEN  | 1600 |    5 |    6550 |          30 |  
  29. |     30 |  7698 | BLAKE  | 2850 |    6 |    9400 |          30 |  
  30. +--------+-------+--------+------+------+---------+-------------+  
  31. 14 rows in set (0.05 sec)  
0 0
原创粉丝点击