SQL题

111 阅读1分钟

题目描述:

统计出当前各个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