描述

查找排除在职(to_date = '9999-01-01' )员工的最大、最小salary之后,其他的在职员工的平均工资avg_salary。
CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,

PRIMARY KEY (`emp_no`,`from_date`));

如:

INSERT INTO salaries VALUES(10001,85097,'2001-06-22','2002-06-22');
INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10003,43699,'2000-12-01','2001-12-01');
INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01');
INSERT INTO salaries VALUES(10004,70698,'2000-11-27','2001-11-27');
INSERT INTO salaries VALUES(10004,74057,'2001-11-27','9999-01-01');

输出格式:

avg_salary
73292

示例1

输入:

drop table if exists  `salaries` ;
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` float(11,3) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
INSERT INTO salaries VALUES(10001,85097,'2001-06-22','2002-06-22');
INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10003,43699,'2000-12-01','2001-12-01');
INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01');
INSERT INTO salaries VALUES(10004,70698,'2000-11-27','2001-11-27');
INSERT INTO salaries VALUES(10004,74057,'2001-11-27','9999-01-01');

复制输出:

73292.000
-- 题目:查找排除在职员工的最大、最小salary之后,其他的在职员工的平均工资
-- 方法一:采用子查询的方法
/*
select avg(salary)
from salaries s
where s.salary not in (select max(salary)
from salaries s
wheres.to_date = '9999-01-01' )
ands.salary not in (select min(salary)
from salaries s
wheres.to_date = '9999-01-01' )
and  s.to_date = '9999-01-01'-- 方法二:使用聚合函数,不适用子查询,使用聚合函数,不用子查询
-- COUNT(1) 代表所有数据长度, -2 代表减去最大最小值的两个长度
-- 这种情况,忽略了多个最大值和多个最小值的情况
select (sum(salary)-max(salary)-min(salary))/(count(1)-2) avg_salary
fromsalaries s
where to_date = '9999-01-01';-- 解法二 窗口函数select avg(ss.salary)
from (select *,row_number() OVER(order by salary) r1,row_number() over(order by salary desc) r2from salarieswhere to_date = '9999-01-01') ss
where ss.r1 <> 1and ss.r2 <> 1and to_date = '9999-01-01'*/ -- 解法四: 把最大和最小去掉  select avg(salary)
from (select * ,max(salary) over() s1,min(salary) over() s2fromsalarieswhere to_date = "9999-01-01") sswhere ss.salary <ss.s1and ss.salary >ss.s2

SQL54 平均工资相关推荐

  1. SQL-54 查找排除当前最大、最小salary之后的员工的平均工资avg_salary。

    题目描述 查找排除当前最大.最小salary之后的员工的平均工资avg_salary. CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `sa ...

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

    描述 查找排除最大.最小salary之后的当前(to_date = '9999-01-01' )员工的平均工资avg_salary. drop table if exists `salaries` ; ...

  3. 查询出每个部门比本部门平均工资高的职工人数

    这句话,我裂开了. 部门表dept如下: 员工表emp如下: 我感觉有两种理解. 1.找出部门内,工资高于平均工资的员工数 with temp(avg_sal,deptno) as (select a ...

  4. 2019宁波本科计算机招聘工资,@宁波人,76282!2019年度平均工资是这么多,你拖后腿了吗?...

    原标题:@宁波人,76282!2019年度平均工资是这么多,你拖后腿了吗? 今天,宁波市统计局发布2019年宁波市平均工资, 我市全社会单位就业人员年平均工资76282元,高于全省4759元.一起来看 ...

  5. 2020年2月全国程序员工资统计,平均工资13716元,你被平均了吗?

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 来自| CSDN   作者 | 有数可据 https://blog.csdn.ne ...

  6. 2021年6月程序员平均工资 15052,你给行业拖后腿了吗?

    上周我们发布了一篇名为<2021年6月程序员工资统计,平均15052元>的文章,引起了网友们的广泛讨论. 据文章中调查结果显示,"2021年6月全国招收程序员435501人,平均 ...

  7. 程序员真香!IT 业 2020 年平均工资最高

    整理 | 王晓曼 出品 | 程序人生 (ID:coder _life) 5月19日,国家统计局发布2020年平均工资数据,随后,相关话题便冲上微博热搜. 程序员真香! 据国家统计局发布的数据显示,20 ...

  8. SQL-16 统计出当前各个title类型对应的员工当前薪水对应的平均工资。结果给出title以及平均工资avg。...

    题目描述 统计出当前各个title类型对应的员工当前薪水对应的平均工资.结果给出title以及平均工资avg. CREATE TABLE `salaries` ( `emp_no` int(11) N ...

  9. 7月平均工资下来,Java程序员哭笑不得!

    2020 魔幻开局,不少企业开始缩减招聘名额,更别说涨薪了!据第三方统计,今年 7 月程序员平均工资为 14357 元.作为第一编程语言的 Java,平均工资 14448 元(6 月为 14433 元 ...

最新文章

  1. IntelliJ IDEA 问题总结之中的一个 —— jar包、assets、maven、git
  2. pthread_cond_broadcast相关
  3. php和python写爬虫-可以写爬虫的那么多,为什么只有python火了?
  4. OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks
  5. 【Spring学习】IoC、DI、AOP入门学习
  6. 7z压缩文档的powershell示例
  7. sed 删除某一行_Linux常用命令三剑客之sed,您真的会用吗?
  8. WebAssembly 为何能改变软件的分发?
  9. python post 表单类数据_python post content-type:multipart/form-data 类型的表单数据
  10. 革新—决定磁带未来的最大挑战
  11. 同事线上埋的这个坑,我整整找了3天3夜
  12. 【车道线检测与寻迹】2月13日 CV导论+数字图像处理与opencv实践+canny边缘检测
  13. opencv-python 霍夫变换
  14. 武汉男人一个月要赚多少钱,老婆才不用上班?心碎成渣……
  15. JAVAweb JSP飞机订票系统航空机票预订销售系统(机票预订系统)网上机票预订飞机订票
  16. 三维导热问题的ADI-TDMA算法
  17. Android下监听返回键、home键、任务键
  18. java向手机号发送短信验证码
  19. 【KNIME案例】参数化驱动工作流调用业务人员建立的脚本
  20. java关键字super指什么_java 关键字super详解及用法

热门文章

  1. 一篇文章帮你搞懂什么是“最小可行性产品”(MVP),以及如何实现!
  2. nginx HTTP 错误码499的含义
  3. OPPO 一加 真我 各种锁定 关闭失败 手撕 vivo iQOO 各种锁定 手撕
  4. 苹果iOS 15正式版发布,iOS 15 兼容所有运行 iOS 14 的 iPhone
  5. 【微信小程序】实现小程序下拉刷新与上拉加载
  6. 高仿微信新消息提示音功能
  7. java扫描所在文件夹_如何在Java中扫描文件夹?
  8. Python第六章 字典
  9. 显存优化:纹理压缩功能介绍与使用说明
  10. 内网渗透——搭建域控制器