创建企业人事数据库,编写Python代码,完成下述嵌入式SQL的查询要求。1. 列出至少有四个员工的所有部门信息。 2. 列出所有员工的姓名及其直接上级的姓名,没有领导的雇员也列出。 3. 列出受雇日期早于其直接上级的所有员工编号/姓名/部门名称。 4. 列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数。 5. 列出在部门sales工作的员工的姓名,假定不知道销售部的部门编号。
时间: 2023-11-28 21:48:50 浏览: 95
以下是Python代码实现:
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('company.db')
# 1. 列出至少有四个员工的所有部门信息。
query1 = '''
SELECT dept.dept_name
FROM department dept
JOIN employee emp ON emp.dept_id = dept.dept_id
GROUP BY dept.dept_name
HAVING COUNT(emp.emp_id) >= 4
'''
result1 = conn.execute(query1).fetchall()
print("查询结果1:")
print(result1)
# 2. 列出所有员工的姓名及其直接上级的姓名,没有领导的雇员也列出。
query2 = '''
SELECT emp.emp_name, mgr.emp_name
FROM employee emp
LEFT JOIN employee mgr ON emp.mgr_id = mgr.emp_id
'''
result2 = conn.execute(query2).fetchall()
print("查询结果2:")
print(result2)
# 3. 列出受雇日期早于其直接上级的所有员工编号/姓名/部门名称。
query3 = '''
SELECT emp.emp_id, emp.emp_name, dept.dept_name
FROM employee emp
JOIN department dept ON emp.dept_id = dept.dept_id
WHERE emp.hire_date < (SELECT mgr.hire_date FROM employee mgr WHERE emp.mgr_id = mgr.emp_id)
'''
result3 = conn.execute(query3).fetchall()
print("查询结果3:")
print(result3)
# 4. 列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数。
query4 = '''
SELECT job.job_title, COUNT(emp.emp_id)
FROM employee emp
JOIN job ON emp.job_id = job.job_id
GROUP BY job.job_title
HAVING MIN(emp.salary) > 1500
'''
result4 = conn.execute(query4).fetchall()
print("查询结果4:")
print(result4)
# 5. 列出在部门sales工作的员工的姓名,假定不知道销售部的部门编号。
query5 = '''
SELECT emp.emp_name
FROM employee emp
JOIN department dept ON emp.dept_id = dept.dept_id
WHERE dept.dept_name = 'sales'
'''
result5 = conn.execute(query5).fetchall()
print("查询结果5:")
print(result5)
# 关闭连接
conn.close()
```
注意:代码中的SQL语句均为嵌入式的SQL语句。
阅读全文