【发布时间】:2018-10-03 18:18:30
【问题描述】:
期望的输出:我想选择 1991 年工资高于 1991 年平均水平的所有员工的头衔。
当前代码:
USE employees;
SELECT t.title
FROM employees emps INNER JOIN
employees.salaries s
ON s.emp_no = emps.emp_no INNER JOIN
employees.titles t
ON t.emp_no = s.emp_no
WHERE s.from_date LIKE '1991%' AND s.salary >
员工表:
CREATE TABLE employees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
工资表:
CREATE TABLE salaries (
emp_no INT NOT NULL,
salary INT NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no, from_date)
标题表:
CREATE TABLE titles (
emp_no INT NOT NULL,
title VARCHAR(50) NOT NULL,
from_date DATE NOT NULL,
to_date DATE,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,title, from_date)
必须使用薪金表中的from_date。
【问题讨论】:
-
使用
YEAR()函数从日期获取年份值。 -
样本数据和期望的结果总是可取的
-
而这一点...
select avg(s.salary).. 显然缺少什么,对吧? -
清理了我的代码,它正在从 from_date 为 1990 的员工中选择头衔,但我不知道如何在 where 条件下获得高于平均工资