SQL面试题挑战10:累计占比

问题:

现在有一张每个年份的每个部门的收入表。现在需要算每个部门的收入占同类型部门的收入的占比和当年整个公司的收入占比。要求一条SQL计算出来。比如研发部和产品部属于同类型的,都是产研;财务部和人事部都属于职能。


year    dept    income
2023    研发部    5000
2023    产品部    6000
2023    财务部    7000
2023    人事部    8000
2022    研发部    10000
2022    产品部    8000
2022    财务部    9000
2022   人事部    8000

SQL解答:

考察sum() over 开窗函数的使用。

with temp as
(
    select '2023' as year,"研发部" as dept,5000 as income
    union all
    select '2023' as year,"产品部" as dept,6000 as income
    union all
    select '2023' as year,"财务部" as dept,7000 as income
    union all
    select '2023' as year,"人事部" as dept,8000 as income
    union all 
    select '2022' as year,"研发部" as dept,10000 as income
    union all
    select '2022' as year,"产品部" as dept,8000 as income
    union all
    select '2022' as year,"财务部" as dept,9000 as income
    union all
    select '2022' as year,"人事部" as dept,8000 as income
)
select
year
,dept
,income
,round(income/similar_dept_income,2) as similar_dept_income_rate
,round(income/year_income,2) as year_income_rate
from
(
    select
    year
    ,dept
    ,income
    ,sum(income) over(partition by year,case 
                        when dept in("研发部","产品部") then "产研"
                        when dept in("财务部","人事部") then "职能"
                        end
    ) as similar_dept_income  --同类型部门收入
    ,sum(income) over(partition by year) as year_income
    from temp
) t1
;
----结果为:
序号       year      dept       income     similar_dept_income_rate     year_income_rate
1	       2022     研发部      10000              0.56                      0.29
2	       2022     产品部      8000               0.44                      0.23
3	       2022     财务部      9000               0.53                      0.26
4	       2022     人事部      8000               0.47                      0.23
5	       2023     研发部      5000               0.45                      0.19
6	       2023     产品部      6000               0.55                      0.23
7	       2023     财务部      7000               0.47                      0.27
8          2023     人事部      8000               0.53                      0.31

相关推荐

  1. SQL面试挑战10累计

    2024-01-02 00:52:05       60 阅读
  2. SQL面试挑战08:补全缺失日的月销售累计

    2024-01-02 00:52:05       62 阅读
  3. SQL面试挑战13:分组topN

    2024-01-02 00:52:05       65 阅读
  4. SQL面试挑战11:访问会话切割

    2024-01-02 00:52:05       51 阅读
  5. SQL面试挑战14:每年的在校人数

    2024-01-02 00:52:05       59 阅读
  6. SQL面试挑战15sql实现分钟级的趋势图

    2024-01-02 00:52:05       55 阅读
  7. SQL面试挑战03:奖金瓜分问题(拼多多)

    2024-01-02 00:52:05       58 阅读
  8. SQL面试挑战06:互相关注的人

    2024-01-02 00:52:05       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-02 00:52:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-02 00:52:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-02 00:52:05       87 阅读
  4. Python语言-面向对象

    2024-01-02 00:52:05       96 阅读

热门阅读

  1. 双击编辑el-table的单元格数据

    2024-01-02 00:52:05       60 阅读
  2. WPF 结合 MVVM模式下SqlSugar ORM框架的使用

    2024-01-02 00:52:05       49 阅读
  3. Python常用技能手册 - 包package

    2024-01-02 00:52:05       50 阅读
  4. 2023.12.28 Python高级-正则表达式

    2024-01-02 00:52:05       60 阅读
  5. 软件白盒测试

    2024-01-02 00:52:05       60 阅读
  6. php多进程处理任务

    2024-01-02 00:52:05       49 阅读
  7. Spring 事务实现

    2024-01-02 00:52:05       53 阅读
  8. Spring03

    Spring03

    2024-01-02 00:52:05      42 阅读
  9. Ubuntu - VMware Workstation 常用快捷键

    2024-01-02 00:52:05       51 阅读