首页 > 其他分享 >查询出每个部门中,工资从高到低进行排名,工资部门排名在前 50%的员工

查询出每个部门中,工资从高到低进行排名,工资部门排名在前 50%的员工

时间:2024-09-09 20:53:48浏览次数:13  
标签:入职 partition 天数 over 50% 部门 工资 排名

1.查询出每个部门中,工资从高到低进行排名,工资部门排名在前 50%的员工(比如部门有6个人,则前50%,则是前3名,如果部门人数为奇数,向下取整确定前 50%的人数),如果其入职天数早于部门平均入职天数,还要列出其入职天数。如果其入职时间晚于部门平均入职天数,则入职天数显示为空 要求查询的结果格式:部门名称,员工,工资,部门排名,入职天数

 

 1.先利用窗口函数,求出基础数据列

2. 筛选前50%的员工,且对入职天数做进一步处理

代码: 

WITH DepartmentStats AS (  
    SELECT  
		    员工id,
				员工姓名,
        部门名称,  
				入职时间,
				工资,
        COUNT(*) over(partition by 部门名称) AS 部门人数,  
			  row_number () over(partition by 部门名称 order by 工资 desc) as 部门排名,
        row_number () over(partition by 部门名称 order by 工资 desc)/COUNT(*) over(partition by 部门名称)  as 部门占比, 
				-- 部门排名/部门人数
				DATEDIFF(CURDATE(), DATE_FORMAT(CAST(入职时间 AS DATETIME), '%Y-%m-%d') ) AS 入职天数,
			  avg(DATEDIFF(CURDATE(), DATE_FORMAT(CAST(入职时间 AS DATETIME), '%Y-%m-%d') )) over(partition by 部门名称) AS 平均入职天数		
    FROM  
        emp  
)
select 部门名称, 员工id,员工姓名,工资,部门排名,case when 入职天数>平均入职天数 then 入职天数 end as 入职天数
from  DepartmentStats t
where 部门占比<=0.5 

 

标签:入职,partition,天数,over,50%,部门,工资,排名
From: https://blog.csdn.net/weixin_42698221/article/details/142068820

相关文章

  • P5025
    高效高效,坚持高效,耶(•̀ω•́)y首先,我们考虑引爆每个炸弹,它能引爆的区间是多少(即:它能对答案做出什么贡献)易得炸一个=炸这个区间为什么?你只要引爆了一个大炸弹(例如沙皇)它就会把它的左边和右边一起抬走所以考虑线性维护每个炸弹向左/向右能炸到哪里代码十分精华:#inclu......
  • COMP3506/7505  Algorithms and Data Structures
    Assignment Two – 25%Algorithms and Data Structures – COMP3506/7505 – Semester 2, 2024Due: 3pm on Friday October 18th (week 12)SummaryThe main objective ofthis assignment is to extend your knowledge from assignment one ......
  • SIEMENS LDZ10500494.200 功率单元
    SIEMENSLDZ10500494.200功率单元广泛适用于多个工业领域,这主要得益于其高效、可靠、稳定以及多样化的控制模式等特点。以下是一些该功率单元可能适用的工业领域:电力工业:在电力系统中,LDZ10500494.200功率单元可用于电力传输和分配过程中的关键控制环节,确保电力供应的稳定......
  • 掌握 13 个页面 SEO 优化要素,轻松提升网站排名
    页面SEO通过优化网站各个部分来帮助搜索引擎抓取和理解页面,提高搜索排名。除了内容,网站速度、移动设备友好性等因素也很重要。页面SEO不仅能提高点击率和访问量,还能提升品牌可信度,是其他SEO工作的基础,如建立链接等。以下我将介绍13个关键的页面SEO元素,从E-E-A-T......
  • 51nod 1050 循环数组最大子段和
    51nod1050循环数组最大子段和虽然是板子题,两种做法,我们先写一种,另一个咕咕。因为是循环,所以分为两种,中间的和两边的,中间的直接dp求最大,两边的转化一下就是总的数字和减去中间的最小数字和。#include<bits/stdc++.h>usingnamespacestd;#definelllonglonglla[500005]......
  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    SSM?中小型药店信息管理系统摘要21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。论......
  • BZOJ 4502 串 题解
    妙妙数数题key:数数题通常是,对于特定形式的计数,就盯着这个模式观察,看出一些充要条件、计数形式的转化,然后想办法维护。优化的本质就是把难算的变成好算的,把不好一起统计的(只能一个个数的)以某种角度、用某些数据结构,一起统计(多个多个数)。我觉得难点通常在于“盯出一些充要条件”,......
  • 电赛2024年H题智能小车基于MSPM0G3507主控MCU(利用8路灰度加上MPU6050的解决方式)
    一.前言        前段时间,激烈的电赛刚刚结束,很荣幸啊,也是十分的不甘心,本次的湖北赛区H题只拿到了一个省二,看最终的排名,在H题中我们离省一也就差几名。但是整个比赛已经过去了,现在不甘与不舍,也没有任何意义了,只有接收这一现实了。    当时我们整个比赛要求一......
  • AtCoder Beginner Contest 250 C~E 题解
    C-AdjacentSwaps题目大意\(N\)个球从左到右排成一列。开始时,从左往右的第\(i\)个球上写着数字\(i\)。请执行\(Q\)个操作,第\(i\)个操作如下:令\(j=~N\)个球中写着数字\(x_i\)的球的位置如果\(j=N\),将其与第\(j-1\)个球交换;否则,与第\(j+1\)个球交换。求所有操作后的球上分......
  • 代码随想录算法训练营,9月7日 | 150. 逆波兰表达式求值,239. 滑动窗口最大值,347.前 K 个
    150.逆波兰表达式求值题目链接:150.逆波兰表达式求值文档讲解︰代码随想录(programmercarl.com)视频讲解︰逆波兰表达式求值日期:2024-09-07想法:用栈解决,遇到运算符取前两个数字计算(表达式总是成立的,不用做额外的判定)Java代码如下:classSolution{publicintevalRPN(Stri......