首页 > 其他分享 >Hive 刷题——累计占比问题

Hive 刷题——累计占比问题

时间:2024-03-27 09:44:24浏览次数:23  
标签:year 累计 2024 dept Hive income type select 刷题

问题描述

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

year    dept    income
2024    研发部    5000
2024    产品部    6000
2024    财务部    7000
2024    人事部    8000

参考实现

with temp as
         (select 2024 as year, "研发部" as dept, 5000 as income
          union all
          select 2024 as year, "产品部" as dept, 6000 as income
          union all
          select 2024 as year, "财务部" as dept, 7000 as income
          union all
          select 2024 as year, "人事部" as dept, 8000 as income)

select year,
       dept,
       round(income / dept_type_income, 2) dept_type_income_ratio,
       round(income / year_income, 2)      year_income_ratio
from (select year
           , dept
           , income
           , sum(income) over (partition by year,dept_type) dept_type_income
           , sum(income) over (partition by year)           year_income
      from (select year,
                   dept,
                   case
                       when dept in ('人事部', '财务部') then '职能'
                       when dept in ('产品部', '研发部') then '产研'
                       else 'other' end dept_type,
                   sum(income)          income
            from temp
            group by year, dept,
                     case
                         when dept in ('人事部', '财务部') then '职能'
                         when dept in ('产品部', '研发部') then '产研'
                         else 'other' end) t) t;

标签:year,累计,2024,dept,Hive,income,type,select,刷题
From: https://www.cnblogs.com/wdh01/p/18094777

相关文章

  • 小阳同学刷题日记-209. 长度最小的子数组
        题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl,numsl+1,...,numsr-1,numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。    惯例,献上我自......
  • LeetCode刷题Day11(补卡)
    20.有效的括号题目链接:leetcode20.有效的括号文章讲解:代码随想录视频讲解:哔哩哔哩视频这题考察的是栈的使用,遍历字符串,如果是左括号存入栈中,如果是右括号则对比栈的头部是否为与之匹配的左括号,如果不是则返回false,最后若栈为空则正好匹配返回true,详细代码如下:cl......
  • 搭建hive环境,并解决后启动hive命令报 hive: command not found的问题
    一、问题解决 1、问题复现2、解决问题        查阅资料得知该问题大部分是环境变量配置出了问题,我就输入以下命令进入配置文件检查自己的环境变量配置:[root@node03~]#vi/etc/profile        检查发现自己的hive配置没有问题 ,于是我就退出,然后更新......
  • Ubuntu实现Hive与HBase的安装与配置(单机)
    (一)Hive的安装与配置 Hive下载链接:https://mirrors.bfsu.edu.cn/apache/hive/(1)将下载好的Hive文件(版本:3.1.2)解压到/usr/local目录下sudotar-zxvf./apache-hive-3.1.2-bin.tar.gz-C/usr/local(2)切换至目录/usr/local,将文件夹名改为hive,并且修改文件权限给本账户cd/......
  • Hive-技术补充-ANTLR语法编写
    一、导读我们学习一门语言,或外语或编程语言,是不是都是要先学语法,想想这些语言有哪些相同点    1、中文、英语、日语......是不是都有主谓宾的规则    2、c、java、python、js......是不是都有数据类型、循环等语法或数据结构虽然人们在过去的几十年里......
  • hive 、spark 、flink之想一想
    hive1:hive是怎么产生的?2:hive的框架是怎么样的?3:hive执行流程是什么?4:hivesql是如何把sql语句一步一步到最后执行的?5:hivesql任务常用参数调优做过什么?spark6:spark是怎么产生的?7:spark框架是怎么样的?8:spark的DAG是什么?9:spark中的app,job,stage,task是什么?有什么好处?......
  • 蓝桥杯刷题(十四)
    1.小平方代码n=int(input())count=0deff(x)->bool:#判断条件returnTrueifx**2%n<n/2elseFalseforiinrange(1,n):#遍历[1,n-1],符合题意计数加一iff(i):count+=1print(count)2.3的倍数代码a=int(input())b=int(input())......
  • 力扣刷题之21.合并两个有序链表
    仅做学习笔记之用。题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]......
  • 每日刷题 例题训练 两数相加
    一.题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例:输入:nums=[3,2,4],......
  • python刷题
    题目:编写一个程序将分钟转换为秒。定义函数convert_to_seconds(),参数为minutes。在函数内,将分钟转换为秒(1分钟=60秒),并返回结果。实验1: 运行结果:实验2: 运行结果: 理由是什么呢? ......