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
相关推荐
vvvae12345 小时前
分布式数据库
数据库
雪域迷影6 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹6 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人7 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky7 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa7 小时前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮8 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长8 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
Mephisto.java8 小时前
【力扣 | SQL题 | 每日四题】力扣2082, 2084, 2072, 2112, 180
sql·算法·leetcode
全栈师9 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle