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

目录

问题:

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

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

SQL解答:

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

sql 复制代码
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
相关推荐
pengdott4 小时前
Oracle RAC内存融合技术深度解析:集群性能的幕后引擎
数据库·oracle
csudata4 小时前
绿色便携版PostgreSQL发行版重磅发布
数据库·postgresql
阳光九叶草LXGZXJ5 小时前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
我科绝伦(Huanhuan Zhou)5 小时前
脚本再升级,兼容Oracle 26ai一键安装
数据库·oracle
野生绿箭侠6 小时前
Ncos 2.3.2 版本集成达梦数据库
数据库
仍然.6 小时前
MYSQL--约束
数据库·mysql
乡野码圣7 小时前
【RK3588 Android12】RCU机制
java·jvm·数据库
亓才孓7 小时前
[数据库]应该注意的细节
数据库·sql
m0_561359678 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
xxxmine8 小时前
redis学习
数据库·redis·学习