zoukankan      html  css  js  c++  java
  • 前N个员工的salary累计和

    ------------恢复内容开始------------

    一、问题

    按照salary的累计和running_total,其中running_total为前N个当前( to_date = '9999-01-01')员工的salary累计和,其他以此类推。 具体结果如下Demo展示。。
    CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL,
    `salary` int(11) NOT NULL,
    `from_date` date NOT NULL,
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`from_date`));

    二、代码

    窗口函数实现:

    select emp_no,salary,sum(salary) over (order by emp_no) as running_total 
    from salaries where to_date = '9999-01-01'

    复用 salaries 表进行子查询:

    主表是a,子查询中复用的表是b,对于小于a.emp_no的b.emp_no所对应的salary进行求和,因为一组a.emp_no对应多个b.emp_no,所以要对a.emp_no进行分组

    select a.emp_no,a.salary,sum(b.salary) as running_total 
    from salaries a,salaries b
    where b.emp_no<=a.emp_no
    and a.to_date = '9999-01-01'
    and b.to_date = '9999-01-01'
    group by a.emp_no

    inner join:

    把所有小于等于当前编号的表s1和当前编号表s2联立起来,然后按照当前编号分组,计算出所有小于等于
    当前标号的工资总数
    SELECT s2.emp_no,s2.salary,SUM(s1.salary) AS running_total
    FROM salaries AS s1 INNER JOIN salaries AS s2
    ON s1.emp_no <= s2.emp_no
    WHERE
    s1.to_date = "9999-01-01"
    AND s2.to_date = "9999-01-01"
    GROUP BY s2.emp_no

    ------------恢复内容结束------------

  • 相关阅读:
    http经典解析
    js实现canvas保存图片为png格式并下载到本地
    你所不知的 CSS ::before 和 ::after 伪元素用法
    js自动下载
    CSS 实现隐藏滚动条同时又可以滚动
    checkbox与文字对齐
    利用html2canvas截图,得到base64上传ajax
    bootstrap-datepicker简单使用
    移动端禁止滚动
    h5移动网页唤起App
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14377074.html
Copyright © 2011-2022 走看看