去掉最高工资和最低工资之后的平均工资

给定一个整数数组,表示员工工资,数组中数字唯一。任务是计算去掉最低和最高工资后的平均工资。例如,对于[4000, 3000, 1000, 2000],平均工资是2500。题目重点考察排序和平均值计算。解决方案通常涉及排序和遍历数组去除极端值。" 129269934,10227230,Vue3响应式原理详解:从基础到实践,"['前端', 'javascript', 'vue.js']

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/average-salary-excluding-the-minimum-and-maximum-salary
给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。

请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。

示例 1:

输入:salary = [4000,3000,1000,2000]
输出:2500.00000
解释:最低工资和最高工资分别是 1000 和 4000 。
去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500
示例 2:

输入:salary = [1000,2000,3000]
输出:2000.00000
解释:最低工资和最高工资分别是 1000 和 3000 。
去掉最低工资和最高工资以后的平均工资是 (2000)/1= 2000
示例 3:

输入:salary = [6000,5000,4000,3000,2000,1000]
输出:3500.00000
示例 4:

输入:salary = [8000,9000,2000,3000,6000,1000]
输出:4750.00000

void InsertSort(int *salary,int salarySi
### 查询最高工资最低工资平均工资的SQL方法 在关系型数据库中,可以利用聚合函数 `MAX()`、`MIN()` `AVG()` 来分别获取数据表中的最大值、最小值平均值。以下是具体的实现方式: #### 获取最高工资 通过使用 `MAX()` 函数来查询工资字段的最大值: ```sql SELECT MAX(salary) AS 最高工资 FROM employees; ``` #### 获取最低工资 通过使用 `MIN()` 函数来查询工资字段的最小值: ```sql SELECT MIN(salary) AS 最低工资 FROM employees; ``` #### 计算平均工资 通过使用 `AVG()` 函数来计算工资字段的平均值,并保留两位小数以提高可读性: ```sql SELECT ROUND(AVG(salary), 2) AS 平均工资 FROM employees; ``` 以上三个操作可以通过一条 SQL 语句完成,从而一次性返回最高工资最低工资平均工资的结果[^1]: ```sql SELECT MAX(salary) AS 最高工资, MIN(salary) AS 最低工资, ROUND(AVG(salary), 2) AS 平均工资 FROM employees; ``` #### 进一步扩展:分组统计 如果需要按照某个维度(如部门)进行分组统计,则可以在上述基础上加入 `GROUP BY` 子句。例如,按部门统计每个部门的最高工资最低工资平均工资[^3]: ```sql SELECT department_id, MAX(salary) AS 部门最高工资, MIN(salary) AS 部门最低工资, ROUND(AVG(salary), 2) AS 部门平均工资 FROM employees GROUP BY department_id; ``` #### 排除异常值后的平均工资计算 当需要排除某些极端值(如最高工资最低工资)后再计算平均工资时,可以借助窗口函数 `RANK()` 或子查询的方式先筛选出符合条件的数据集,然后再执行聚合运算[^4]。以下是一个示例代码片段用于去除每组内的最高最低薪资后重新计算平均值: ```sql SELECT department, AVG(salary) AS 调整后平均工资 FROM ( SELECT *, RANK() OVER (PARTITION BY department ORDER BY salary ASC) AS sa_asc_rank, RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS sa_desc_rank FROM employees ) t WHERE sa_asc_rank != 1 AND sa_desc_rank != 1 GROUP BY department; ``` ### 注意事项 - 如果存在多个相同的最高最低工资记录,默认只会移除其中的一条;因此,在实际应用过程中需确认业务需求是否允许这种情况发生。 - 当某一分组下的有效样本量过小时(比如仅剩下一个成员),可能会导致最终结果失去意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值