2301_81783565 2024-07-07 23:27 采纳率: 0%
浏览 4

关系代数查询请求帮助

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

img

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-07-07 23:27
    关注

    引自免费微信小程序:皆我百晓生

    好的,让我帮您解决这个问题。

    1. 查询技术岗所有职工的岗位津贴总和

    首先,我们需要在职工表中找到所有的技术岗位。接着,计算每个技术岗位的津贴总和。

    SELECT SUM(salary.job_tier) AS total_tier
    FROM employee
    JOIN salary ON employee.emp_no = salary.emp_no
    WHERE job_title = '技术岗'
    

    2. 按部门统计各部门的职工人数

    我们只需要统计每个部门的职工数量。

    SELECT department, COUNT(*) as num_employees
    FROM employee
    GROUP BY department;
    

    3. 查询2020年以后入职的职工姓名,及其所在的部门名和岗位名

    首先,找出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';
    

    4. 修改销售部门的经理编号为张宏的职工号

    我们需要找到销售部门的经理,并将其职工号改为张宏。

    UPDATE employee
    SET manager = '张宏'
    WHERE department = '销售部' AND first_name = '张';
    

    5. 创建视图

    我们可以创建一个视图,通过职工号和职工姓名查询每月的应发工资。

    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查询时,务必小心检查数据完整性,确保数据的一致性和准确性。
    • 确保您的数据库连接正确,并且有权限访问所需的数据。

    以上就是关于如何解决这些问题的SQL查询示例。如果您有任何疑问或需要进一步的帮助,请随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月7日