MySQL是目前最為流行的關系型數據庫管理系統之一,廣泛應用于各種網絡應用和Web開發中。在實際的數據管理工作中,我們需要用到MySQL的一些高級功能,例如員工部門薪資表。
員工部門薪資表是一種常用的數據庫結構,用于存儲員工的基本信息、所屬部門和薪資等數據。它的數據庫模式如下:
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 dept_emp ( emp_no INT 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 departments ( dept_no CHAR(4) NOT NULL, dept_name VARCHAR(40) NOT NULL, PRIMARY KEY (dept_no), UNIQUE KEY (dept_name) ); CREATE TABLE salaries ( emp_no INT NOT NULL, salary INT NOT NULL, from_date DATE NOT NULL, to_date DATE NOT NULL, PRIMARY KEY (emp_no,from_date), FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE, CHECK (salary >= 0) );
該數據庫模式使用了四個表,分別存儲了員工信息、員工所屬部門、部門信息和員工薪資等數據。其中,employees
表存儲了所有員工的基本信息,dept_emp
表存儲了員工所屬的部門信息,departments
表存儲了所有部門的信息,salaries
表存儲了員工的薪資信息。
為了實現員工部門薪資表的查詢功能,我們可以使用MySQL的內連接和聚合函數等高級功能。下面是一個示例SQL查詢語句:
SELECT departments.dept_name, COUNT(DISTINCT employees.emp_no) AS total_employee, ROUND(AVG(salaries.salary),2) AS avg_salary FROM employees INNER JOIN dept_emp ON employees.emp_no = dept_emp.emp_no INNER JOIN salaries ON employees.emp_no = salaries.emp_no INNER JOIN departments ON dept_emp.dept_no = departments.dept_no WHERE salaries.to_date = '9999-01-01' GROUP BY departments.dept_name ORDER BY avg_salary DESC;
該查詢語句使用了INNER JOIN操作將四個表連接起來,并使用了COUNT和AVG聚合函數計算了每個部門的員工總數和平均薪資。同時,使用了WHERE子句篩選出了所有在職員工的薪資信息,并使用GROUP BY子句對每個部門的數據進行分組。最后,使用ORDER BY子句將查詢結果按照平均薪資降序排列。
總之,員工部門薪資表是一個非常實用的數據庫結構,可以幫助我們有效地管理員工信息和薪資等數據。同時,MySQL的高級查詢功能也為員工部門薪資表的查詢和分析提供了強有力的支持。
上一篇mysql事務練習
下一篇oracle vue題