分享好友 最新动态首页 最新动态分类 切换频道
569. 员工薪水中位数 - 力扣(LeetCode)
2024-12-27 01:27

目录

569. 员工薪水中位数 - 力扣(LeetCode)

1. 力扣链接

2. 题目

3. 分析

4. 代码实现

5. 代码验证

6. 总结


569. 员工薪水中位数 - 力扣(LeetCode

表: 

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| id           | int     |
| company      | varchar |
| salary       | int     |
+--------------+---------+
id 是该表的主键列(具有唯一值的列)。
该表的每一行表示公司和一名员工的工资。

编写解决方案,找出每个公司的工资中位数。

以 任意顺序 返回结果表。

查询结果格式如下所示。

示例 1:

输入: 
Employee 表:
+----+---------+--------+
| id | company | salary |
+----+---------+--------+
| 1  | A       | 2341   |
| 2  | A       | 341    |
| 3  | A       | 15     |
| 4  | A       | 15314  |
| 5  | A       | 451    |
| 6  | A       | 513    |
| 7  | B       | 15     |
| 8  | B       | 13     |
| 9  | B       | 1154   |
| 10 | B       | 1345   |
| 11 | B       | 1221   |
| 12 | B       | 234    |
| 13 | C       | 2345   |
| 14 | C       | 2645   |
| 15 | C       | 2645   |
| 16 | C       | 2652   |
| 17 | C       | 65     |
+----+---------+--------+
输出: 
+----+---------+--------+
| id | company | salary |
+----+---------+--------+
| 5  | A       | 451    |
| 6  | A       | 513    |
| 12 | B       | 234    |
| 9  | B       | 1154   |
| 14 | C       | 2645   |
+----+---------+--------+
 
 
  1. 需求:找出每个公司的工资中位数。由此分析出需要根据公司进行分组,并了解中位数的定义
  2. 中位数定义:将数据集中的所有数值按照大小顺序排列后,位于中间位置的数值。如果数据集的个数是奇数,那么中位数就是中间的那个数;如果数据集的个数是偶数,那么中位数就是中间两个数的平均值
  3. 由中位数定义可以分析出需要计算每个公司的总数,以及按照工资按大小顺序排名
  4. 通过每个公司总数可以计算出中位数位置。总数为偶数,中位数位置是位于中间两个数值,具体位置可以通过公式 总数 / 2总数 / 2 + 1 计算。总数为奇数,中位数位置就是位于中间位置的数值,具体位置可以通过公式ceil(总数 / 2)计算
  5. 最后通过排名对于中位数位置进行条件过滤即可
 
 
  • 子查询代码中首先使用了一个子查询来为每个公司的工资数据进行排序并计算总数。

  • 窗口函数row_number() over(partition by company order by salary) rn:这个窗口函数为每个公司的工资数据分配一个行号(rn,按照工资从低到高排序。partition by company意味着每个公司的行号是独立计算的。count(id) over(partition by company) total:这个窗口函数计算每个公司的员工总数(total,同样是按公司分区计算。

  • 条件筛选where rn in (total / 2, total / 2 + 1, ceil(total/2)):这个条件用于筛选出每个公司工资的中位数。如果公司员工总数是偶数,中位数将是中间两个工资的平均值,这两个工资的行号分别是total / 2和total / 2 + 1。如果员工总数是奇数,中位数将是位于中间的单个工资,其行号是ceil(total/2)。

  • 向上取整ceil(total/2)用于计算奇数个员工总数的中位数位置,确保得到一个整数行号。

最新文章
龙BT最新技术革新及其影响力展望
摘要:最新的龙BT技术革新在科技领域引起了广泛关注。这一技术突破带来了更高效、更便捷的应用体验,推动了相关行业的快速发展。其影响不仅体现在提升了工作效率,更在相关领域内催生了新的商业模式和竞争格局。这项技术的革新对于推动社会
线上推广引流的方法_线上推广获客
∩^∩ ...小程序用户达160万人,2023年计划组织超40场线上线下营销推广活动相关营销能力也成为了拓展引流必不可少的手段。公司是否有相应的发展计划,来推动自身旅游业务发展?公司回答表示:公司积极拓宽线上营销后面会介绍。 住宿业平台
龙岩SEO网络营销,企业互联网腾飞的关键动力
龙岩SEO网络营销,作为企业互联网发展的新引擎,通过优化搜索引擎排名,提升企业品牌影响力,助力企业实现线上腾飞。随着互联网的飞速发展,网络营销已经成为企业提升品牌知名度、拓展市场份额的重要手段,龙岩作为福建省的一个地级市,拥
首次!文明大冶跻身百强榜!
喜荆楚网(湖北日报网)楚天舆情数据研究院制作的湖北区县微信排行榜2024年11月榜单出炉“文明大冶”微信公众号首次跻身全省TOP100榜排行榜规则说明1、聚集湖北省内主要党政机关政务微信公众号,根据WCI指数数据进行科学排行,主要从“整体
骗了人:深世智能APP是做任务刷单软件!被骗无法提现不了
深世智能APP是做任务刷单软件!被骗无法提现不了帮助出嘿葳《8224205》希望阅读此文的读者能够及时采取措施以减少损失;请及时与团队联系提供解决方案(文章下面图片有咨询方式)若想追回损失资产,务必仔细阅读以下内容。【GFRGRHFDHS】202
重磅揭秘“滴滴抢预约单神器软件”爆光开挂猫腻详情
滴滴抢预约单神器软件是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微下载使用。抢单可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义抢单系统规律,只需要输入自己想要
百度排名优化软件
百度排名优化软件:提升网站在百度搜索结果中的排名随着互联网的快速发展,越来越多的企业和个人都意识到了网络营销的重要性。而在网络营销中,百度排名优化软件成为了提高网站在百度搜索结果中排名的有效工具。本文将为您详细介绍百度排名
搜狗搜索手机旧版
搜狗搜索智能搜索结果为您展示最直观最易懂的搜索结果,全网热点深度解析,全民多话题讨论。感兴趣的小伙伴快来下载搜狗搜索手机旧版体验吧。通过微信登陆、身份标签、智能推荐和收藏分享;能让用户在海量微信公众号内容中迅速找到自己感兴
最新炒股技巧深度解析与应用策略指南
摘要:,,最新炒股技巧深度解析与应用策略,本文提供对股市的最新动态和趋势的深入理解。通过深度解析各种技术指标、市场趋势和交易策略,帮助投资者更好地把握市场机会,提高投资成功率。本文强调应用策略的重要性,提供实用的投资建议和
鲁大师AiNAS app功能特色:
鲁大师AiNAS app是鲁大师官方倾情推出的一款个人私有云服务器应用,软件拥有智能助理,文件套件,相册套件,电脑下载等等方便服务,觉得不错的朋友可以前来下载使用。鲁大师AiNAS能够将您的电脑变为一台个人服务器,让您可以通过本 APP 随
相关文章
推荐文章
发表评论
0评