sql3
2020-02-03 本文已影响0人
xmgh1024
题目描述:
统计出当前各个title类型对应的员工当前(to_date='9999-01-01')薪水对应的平均工资。结果给出title以及平均工资avg。
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 IF NOT EXISTS "titles" (
`emp_no` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`from_date` date NOT NULL,
`to_date` date DEFAULT NULL);
题解:
此题用到了AVG()求平均值的函数,和分组group by关键字。
要查的结果在两个不同的表中,用到了联表查询。
这里需要排除一个误区,当联表查询的时候能不能用分组?
答案是肯定的,因为group by 是对select 后的结果进行分组,跟要查询多少个表没有关系。
故答案为:
select title,AVG(s.salary) from titles t,salaries s where
t.emp_no=s.emp_no
and t.to_date='9999-01-01'
and s.to_date='9999-01-01'
group by title