首页 > 试题广场 >

统计出当前各个title类型对应的员工当前薪水对应的平均工资

[编程题]统计出当前各个title类型对应的员工当前薪水对应的平均工资
  • 热度指数:352527 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个员工职称表titles简况如下:
emp_no 
title
from_date 
to_date
10001
Senior Engineer 1986-06-26 9999-01-01
10003
Senior Engineer 2001-12-01
9999-01-01
10004
Senior Engineer 1995-12-01 9999-01-01
10006
Senior Engineer
2001-08-02
9999-01-01
10007
Senior Staff
1996-02-11 9999-01-01


有一个薪水表salaries简况如下:
emp_no 
salary
from_date 
to_date
10001
88958 1986-06-26
9999-01-01
10003
43311 2001-12-01
9999-01-01
10004
74057 1995-12-01 9999-01-01
10006
43311 2001-08-02 9999-01-01
10007 88070 2002-02-07 9999-01-01

请你统计出各个title类型对应的员工薪水对应的平均工资avg。结果给出title以及平均工资avg,并且以avg升序排序,以上例子输出如下:
title avg(s.salary)
Senior Engineer 62409.2500
Senior Staff
88070.0000
示例1

输入

drop table if exists  `salaries` ; 
drop table if exists  titles;
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`));
CREATE TABLE titles (
`emp_no` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`from_date` date NOT NULL,
`to_date` date DEFAULT NULL);
INSERT INTO salaries VALUES(10001,88958,'1986-06-26','9999-01-01');
INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01');
INSERT INTO salaries VALUES(10004,74057,'1995-12-01','9999-01-01');
INSERT INTO salaries VALUES(10006,43311,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10007,88070,'2002-02-07','9999-01-01');

INSERT INTO titles VALUES(10001,'Senior Engineer','1986-06-26','9999-01-01');
INSERT INTO titles VALUES(10003,'Senior Engineer','2001-12-01','9999-01-01');
INSERT INTO titles VALUES(10004,'Senior Engineer','1995-12-01','9999-01-01');
INSERT INTO titles VALUES(10006,'Senior Engineer','2001-08-02','9999-01-01');
INSERT INTO titles VALUES(10007,'Senior Staff','1996-02-11','9999-01-01');

输出

Senior Engineer|62409.2500
Senior Staff|88070.0000
头像 searth
发表于 2021-03-12 15:48:37
统计出各个title类型对应的员工薪水对应的平均工资avg。结果给出title以及平均工资avg,并且以avg升序排序 员工职称表和薪酬表通过员工号链接,用职称分类后以平均薪酬升序(默认)排列。 select t.title,avg(s.salary) as average from titles 展开全文
头像 N刻后告诉你
发表于 2020-05-19 20:32:51
题目:从统计出当前各个title类型对应的员工当前(to_date=‘9999-01-01')薪水对应的平均工资。结果给出title以及平均工资avg。 INNER JOIN+GROUP BYSELECT t.title, AVG(salary) AS avgFROM titles as tINNE 展开全文
头像 郑大涛
发表于 2021-07-05 23:05:43
一个是告诉了一个人头衔是啥一个是告诉了一个人工资多少查询的话就是将两张表连在一起就是最后的查询的总表于是有 select t.title, avg(s.salaries) from titles as t join salaries as s where t.emp_no = s.e 展开全文
头像 jiang_dr
发表于 2021-10-09 10:14:37
思路:题目所表达的意思其实就是两表连接后,通过分组求title和avg(s.salary)。 这里我们需要注意的是: 在经过 group by 之后,select 中只能包含分组的字段以及聚合函数。 有很多人说不明白为什么要使用 to_date ,其实这个只是为了保证是当前的员工。 完整代码: 展开全文
头像 白伟仝
发表于 2020-06-26 18:31:41
select title, avg(salary) from salaries, titles where salaries.to_date='9999-01-01' and titles.to_date='9999-01-01' and salaries.emp_no=titles.emp_no 展开全文
头像 高质量搬砖人
发表于 2021-01-29 15:29:31
方法)AVG + GROUP BY 当前(titles.to_date='9999-01-01')各个title类型 员工当前(salaries.to_date='9999-01-01')薪水 SELECT t.title, A 展开全文
头像 Dateron
发表于 2021-04-16 17:50:32
1.根据两个表的 emp_no inner join 成一个新表;2.然后根据 title 分组,求其平均值,过滤出相应字段,再根据平均薪水升序排序 select title,avg(salary) avg_salary from (select * from titles) a inner joi 展开全文
头像 Java编程白哥
发表于 2023-03-12 23:36:05
方法一:思路:根据使用 group by 对 title 进行分组,平均工资用聚合函数 avg。 select title,avg(salary) from titles t left join salaries s on t.emp_no = s.emp_no group 展开全文
头像 白色巧克力丶1
发表于 2022-06-24 13:49:32
分3步 第一步 查出员工表所有的title,并对title进行分组 select ti.title from titles ti group by ti.title 第二步 查出员工在薪水表的的平均工资,并对title进行分组 select ti.title, avg(sa.salary) a 展开全文
头像 Ding_123
发表于 2021-11-03 17:50:04
知识点 使用group by进行分组 聚合函数写在select后 代码 select title, avg(salary) from titles t join salaries s on t.emp_no = s.emp_no group by title order by avg(salar 展开全文

问题信息

难度:
511条回答 30555浏览

热门推荐

通过挑战的用户

查看代码