【问题标题】:SQL nested aggregate wage by quarterSQL 嵌套按季度汇总工资
【发布时间】:2017-03-26 11:02:25
【问题描述】:

我正在尝试汇总工人 8 个季度的工资。作为列,有

employee id
quarter (1 digit int)
year (4 digit int)
quarterly_wage
year_quarter (string i created from quarter and year)

我希望每一行都有

employee id, year_quarter, 8 quarters of wages

例如, 2名员工,一名从2010年第一季度开始,第二名从2010年第四季度开始。数据是从2010Q1到2014Q4。

Employ1 2010Q1 SumOfWages2010Q1_2012Q4
Employ1 2010Q2 SumOfWages2012Q2_2013Q1
Employ1 2010Q3 SumOfWages2012Q2_2013Q2
Employ1 2010Q4 SumOfWages2012Q2_2013Q3
Employ2 2010Q4 SumOfWages2010Q4_2012Q3
etc...

这将是 15 年,1000 名员工。 任何建议将不胜感激。

【问题讨论】:

    标签: sql postgresql group-by nested aggregate-functions


    【解决方案1】:

    假设您拥有所有员工的完整数据(即没有空白),您可以:

    select empid, year, quarter, quarterly_wage
           sum(quarterly_wage) over (partition by emp_id
                                     order by year, quarter
                                     rows between current row and 7 following
                                    ) as wages_8quarters
    from t;
    

    【讨论】:

    • 哦,天哪,我去睡觉了,发现一个类似的答案...谢谢您提供更好的解决方案!
    • 我想创建一个布尔列来显示一个人至少连续两个季度为同一雇主工作,理想情况下 >=3。我已加入带有“人”员工 ID 的雇主。我已经通过员工 ID 和 YearQuarter 订购了加入。我还有其他变量将在查询中保留。员工本可以在一个季度或多个季度与多个雇主合作。不关心这些情况。
    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2015-10-17
    • 2014-10-05
    相关资源
    最近更新 更多