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

最新文章
营口SEO推广收费揭秘,解析奥秘与明智选择之道
营口SEO推广收费标准揭秘:本文深入剖析营口SEO推广行业收费规则,揭示行业奥秘,为企业和个人提供合理选择SEO推广服务的指南。通过对比分析,助您了解费用构成,避免陷入陷阱,实现高效SEO推广。随着互联网的快速发展,越来越多的企业开始
百度上网页快照是什么意思(网站图片优化主要方法)
在做网络推广网站优化的过程中,网站快照也是对网站优化的一大评判标准,针对网站快照也可以了解到有关网站的一些状态和信息,来对网站进行更及时合理的优化调整,下面就跟随做网络推广一起来看一下。1、通过快照可了解搜索引擎抓取频次通
搜狗搜索优化策略,如何提升网站搜狗搜索引擎排名?
在这个信息爆炸的时代,每一个网站都渴望在搜索引擎中脱颖而出,吸引更多的目光和流量。而我,作为一名在SEO领域摸爬滚打多年的从业者,深知搜狗搜索引擎优化的重要性。搜狗搜索,凭借其强大的自然语言处理和机器学习能力,不断优化搜索算
跳转微信链接转化率高达80%的引流工具
据不完全数据统计,截止近些年,智能手机逐渐走入了千家万户,覆盖了全国超过90%以上的用户,成为绝大多数人士在工作上或者生活中不可或缺的一个部分。随着互联网社交技术的更新换代,微信的平台功能模块日趋健全,服务于更加广阔的商家和
桌面虚拟化 免费云桌面系统 云电脑租用 YL135 禹龙 办公云终端服务器
桌面虚拟化 免费云桌面系统 云电脑租用 云终端解决方案 虚拟化服务商一、云桌面介绍云桌面是完全符合云计算特征的一种云形态,也是云计算最主要的落地方式之一。桌面云的定义是:“可以通过瘦客户端或者其他任何与网络相连的设备(普通PC、
英文网站建设有什么需要注意
随着经济全球化影响范围的扩大和趋势的蔓延,国际间的交流合作加强,制作一个符合国际化标准的英文网站成为国际企业之间交流的主要平台。英文网站建设对企业之间的市场开拓具有重要的意义,那么英文网站建设有什么需要注意的呢?1.网站风格
谷歌关键词规划师使用详细教程
谷歌关键词规划师(Google Keyword Planner)是一个强大的工具,主要用于帮助用户研究和规划他们的广告活动中的关键词。以下是使用谷歌关键词规划师的基本步骤和方法:1. 访问关键词规划师登录谷歌 Ads 帐户:首先,您需要拥有谷歌 Ads 帐
超级菜菜鸟全程架站攻略(Mysql+Apche+PHP+Phpmyadmin+Zend,含本机安装)
——本文是我5月份刚学PW一个来月时写的攻略,因自己对语言一窍不通,只好自己琢磨+摸索,用了1个通宵研究出来的。今日有朋友问我架设方法,才想起俺写过这么个东西,一直没拿出来发表,今日赶紧补上:)不是超级菜鸟的可以不往下看了哈,
香港资料大全正版资料2024年免费,最佳精选解释落实_LE版6.822
  在这个信息爆炸的时代,数据和知识的获取看似随手可得,但实际上并非所有信息都是准确和权威的。“香港资料大全正版资料2024年免费,最佳精选解释落实_LE版6.822”应运而生,旨在为需要深入了解香港且追求高品质的读者提供一个官方、免
用AI绘画生成超逼真美女写真,零基础也能掌握!
DALL-E:这个工具是由OpenAI推出的强大AI图像生成器,可以将文字描述转化为生动的图片。用户只需通过自然语言描述自己想要的美女形象,DALL-E便能生动还原。优点是能生成非常富有创意和细节的图像,缺点则是对于中文的识别和生成效果相对较
相关文章
推荐文章
发表评论
0评