简单方法

查找排除当前最大、最小salary之后的员工的平均工资avg_salary

http://www.nowcoder.com/questionTerminal/95078e5e1fba4438b85d9f11240bc591

使用聚合函数,不用子查询
COUNT(1) 代表所有数据长度, -2 代表减去最大最小值的两个长度

SELECT (SUM(salary) - MAX(salary) - MIN(salary)) / (COUNT(1)-2) avg_salary 
FROM salaries where to_date = '9999-01-01';
全部评论
万一最大或者最小工资有不止一条数据呢,这种逻辑不严谨。
58 回复 分享
发布于 2021-01-18 09:34
按常规来想,去除最大最小一般都是去掉一个最大和一个最小。不会全部去掉不然没意义。比如5个评委打分全打最高分10分,那你全部去掉再平均得0分。笑死了吧
20 回复 分享
发布于 2021-04-21 17:04
题目也没有明确说明是只删除一个最大值,一个最小值吧,那么默认就是删除所有最大值和最小值;个人认为解答解得没有问题,可以说题目没说清楚!
7 回复 分享
发布于 2021-03-07 22:23
同意楼上的观点。
2 回复 分享
发布于 2021-03-03 09:02
解法蛮好的,也符合现实打分现象,个人感觉这个题目可能有些不是很严谨,该题目应该也是符合这种打分背景,题目可以再清晰一些。
1 回复 分享
发布于 2021-06-06 21:56
为什么这里用了聚合函数sum(),max(),min(),count()不需要group by呢
点赞 回复 分享
发布于 2023-08-05 21:41 广西
这思路真是牛掰
点赞 回复 分享
发布于 2022-08-01 15:33
为什么count(1)代表所有行数?我在括号中随机输入0到100任意数,得出的结果都是7,添加where在职条件,就输出结果都是4
点赞 回复 分享
发布于 2022-04-18 18:28
高手哇!
点赞 回复 分享
发布于 2021-06-15 23:24
有一个问题 如果只有一条记录呢 好像就不行了
点赞 回复 分享
发布于 2021-05-17 14:11

相关推荐

点赞 评论 收藏
分享
评论
357
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务