分享好友 最新动态首页 最新动态分类 切换频道
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)用于计算奇数个员工总数的中位数位置,确保得到一个整数行号。

最新文章
通达信亦风自动划线主图指标公式
公式源码:通达信公式 亦风自动划线 的源码:F111:=ZIG(3,15);F211:=IF((F111 REF(F111,1)),100,80);昨:REF(C,1),NODRAW,COLORGREEN;上涨家数:=INDEXADV;下跌家数:=INDEXDEC;人气:上涨家数/下跌家数,NODRAW;M5:=MA(C,5),COLORFFFFFF;M10:=M
用AI绘画工具生成超逼真美女写真,轻松变身街拍达人!
在这个数字化时代,创作艺术作品的工具层出不穷。想象一下,你能否在家中轻轻松松地生成一张超逼真的美女写真?那么,答案就是有可能的!随着AI技术的不断发展,越来越多的当红AI绘画工具横空出世,让我们能够以几乎零门槛的方式创造出令人
SEO优化见效时间的详细解析
SEO优化见效时间的详细解析在数字营销的世界里,搜索引擎优化(SEO)是提升网站可见性和吸引目标受众的关键策略。然而,许多企业主和市场营销人员常常对SEO的见效时间感到困惑。本文将从几个角度探讨SEO的见效时间,包括影响因素、常见误区
揭秘搜狗SEO蜘蛛池分类与优化之道
搜狗SEO蜘蛛池分类解析包括自然池、广告池和行业池,针对不同类型,优化策略各异。自然池需优化内容质量和链接布局;广告池需确保广告内容合规且相关;行业池需聚焦行业关键词,提升专业性。整体优化需结合网站结构和用户体验,提升搜索引
规则引擎解决方案浅析
用于页面,流程,扩展点实现的选择;输出结果:实现的位置;编排无数的条件积木和行为积木,达到业务逻辑计算,券库存消减的目的;输出结果:商品重计算后的价格;通过订单,售后单,会员等信息编排和判断,达到多因子决策给出最佳答案的效
漫画台免费版app
漫画台免费版app是一款深受漫画爱好者喜爱的手机漫画阅读软件。漫画台免费版app凭借其丰富的漫画资源、极速更新、互动体验、个性化推荐以及便捷的阅读体验等亮点,成为了漫画爱好者的必备之选。软件内置了强大的搜索功能,用户可以通过漫画
达内seo培训」如何用网站内页把关键词优化排名到百度第一?
  「达内seo培训」如何用网站内页把关键词优化排名到百度第一?  【达内seo培训】这样把广安SEO优化排名到百度首页,如何用网站内页把关键词优化排名到百度第一?前面来段插曲!相信很多的公司老板在想要做网站推广,seo关键词排名,网站
线上投票怎么做,QQ音乐投票活动怎么拉票
线上投票怎么做,QQ音乐投票活动怎么拉票线上投票是一种常见的活动组织方式,通过互联网平台进行投票,参与者可以通过手机、电脑等设备进行投票。QQ音乐投票活动是一种常见的线上投票形式,参与者可以通过QQ音乐平台参与活动,获得更多的投
网站标题Title标签的优化方法
标题标签对于赣州网站开发,赣州网络公司,赣州手机网站开发,赣州电脑网站开发优化非常重要。许多站长将优化标题标签放在重要位置。虽然站长们知道标题标签优化可以提高网站的排名,但他们不知道有什么好的方法可以优化它。由于标题标签优化
相关文章
推荐文章
发表评论
0评