一、设有一个HR数据库,包含department(部门表)、post(岗位表)、mployee(职工表)、salary(薪水表)


关注引自免费微信小程序:皆我百晓生
好的,让我帮您解决这个问题。
首先,我们需要在职工表中找到所有的技术岗位。接着,计算每个技术岗位的津贴总和。
SELECT SUM(salary.job_tier) AS total_tier
FROM employee
JOIN salary ON employee.emp_no = salary.emp_no
WHERE job_title = '技术岗'
我们只需要统计每个部门的职工数量。
SELECT department, COUNT(*) as num_employees
FROM employee
GROUP BY department;
首先,找出2020年以后入职的员工。然后,根据这些信息获取职工姓名、所属部门以及岗位名称。
SELECT e.first_name || ' ' || e.last_name as emp_name,
d.department,
s.job_title
FROM employee e
JOIN department d ON e.department_id = d.department_id
LEFT JOIN salary s ON e.emp_no = s.emp_no
WHERE e.hire_date >= '2020-01-01';
我们需要找到销售部门的经理,并将其职工号改为张宏。
UPDATE employee
SET manager = '张宏'
WHERE department = '销售部' AND first_name = '张';
我们可以创建一个视图,通过职工号和职工姓名查询每月的应发工资。
CREATE VIEW monthly_salaries AS
SELECT e.emp_no, CONCAT(e.first_name, ' ', e.last_name) as emp_name, e.salary, e.hire_date
FROM employee e
INNER JOIN (
SELECT DISTINCT manager, emp_no FROM employee
WHERE department = '销售部'
) m ON e.emp_no = m.emp_no
ORDER BY hire_date DESC;
这个视图包含了每位销售部门员工的信息,包括他们的名字、月薪和其他相关信息。您可以选择任何一个月份并使用 monthly_salaries 视图进行查询。例如:
SELECT * FROM monthly_salaries WHERE year(hire_date) = 2021;
以上就是关于如何解决这些问题的SQL查询示例。如果您有任何疑问或需要进一步的帮助,请随时提问。