- ~
題目描述
彙總各個部門當前員工的title類型的分配數目,結果給出部門編號dept_no、dept_name、其當前員工全部的title以及該類型title對應的數目count
CREATE TABLE departments
(dept_no
char(4) NOT NULL,dept_name
varchar(40) NOT NULL,
PRIMARY KEY (dept_no
));
CREATE TABLE dept_emp
(emp_no
int(11) NOT NULL,dept_no
char(4) NOT NULL,from_date
date NOT NULL,to_date
date NOT NULL,
PRIMARY KEY (emp_no
,dept_no
));
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);測試
本題的關鍵在於用 GROUP BY 同時對 de.dept_no 和 t.title 進行分組,具體思路以下: 一、先用 INNER JOIN 鏈接 dept_emp 與 salaries,根據測試數據添加限定條件 de.to_date = '9999-01-01' AND t.to_date = '9999-01-01',即當前員工的當前頭銜 二、再用 INNER JOIN 鏈接departments,限定條件爲 de.dept_no = dp.dept_no,即部門編號相同 三、最後用 GROUP BY 同時對 de.dept_no 和 t.title 進行分組,用 COUNT(t.title) 統計相同部門下相同頭銜的員工個數 SELECT de.dept_no, dp.dept_name, t.title, COUNT(t.title) AS count FROM titles AS t INNER JOIN dept_emp AS de ON t.emp_no = de.emp_no AND de.to_date = '9999-01-01' AND t.to_date = '9999-01-01' INNER JOIN departments AS dp ON de.dept_no = dp.dept_no GROUP BY de.dept_no, t.title