数据库查询练习题

1. 查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。
SELECT 
    department.department_id,
    department.department_name,
    department.department_location,
    COUNT(employee.employee_id) AS department_population
FROM 
    department
INNER JOIN 
    employee ON department.department_id = employee.department_id
GROUP BY 
    department.department_id
HAVING 
    COUNT(employee.employee_id) > 0;

2. 列出所有员工的姓名及其直接上级的姓名。
SELECT 
    employee.employee_name,
    manager.employee_name AS manager_name
FROM 
    employee
LEFT JOIN 
    employee AS manager ON employee.manager_id = manager.employee_id;

3. 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。
SELECT 
    e.employee_id,
    e.employee_name,
    d.department_name
FROM 
    employee e
INNER JOIN 
    department d ON e.department_id = d.department_id
WHERE 
    e.hire_date < (
        SELECT 
            hire_date 
        FROM 
            employee 
        WHERE 
            employee_id = e.manager_id
    );

4. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
SELECT 
    department.department_name,
    employee.employee_id,
    employee.employee_name
FROM 
    department
LEFT JOIN 
    employee ON department.department_id = employee.department_id
ORDER BY 
    department.department_id, employee.employee_id;

5. 列出最低薪金大于15000的各种工作及从事此工作的员工人数。
SELECT 
    job_title,
    COUNT(employee_id) AS number_of_employees
FROM 
    employee
JOIN 
    job ON employee.job_id = job.job_id
GROUP BY 
    job_title
HAVING 
    MIN(salary) > 15000;

6. 列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。
SELECT 
    employee_name
FROM 
    employee
WHERE 
    department_id = (
        SELECT 
            department_id 
        FROM 
            department 
        WHERE 
            department_name = '销售部'
    );

7. 列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。
SELECT 
    employee.employee_id,
    employee.employee_name,
    department.department_name,
    supervisor.employee_name AS supervisor_name,
    salary.grade_level
FROM 
    employee
JOIN 
    department ON employee.department_id = department.department_id
JOIN 
    salary ON employee.job_id = salary.job_id
JOIN 
    employee AS supervisor ON employee.supervisor_id = supervisor.employee_id
WHERE 
    employee.salary > (SELECT AVG(salary) FROM employee)
ORDER BY 
    employee.employee_id;

8.列出与庞统从事相同工作的所有员工及部门名称。


9.列出薪金高于部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
SELECT 
    employee.employee_name,
    employee.salary,
    department.department_name
FROM 
    employee
JOIN 
    department ON employee.department_id = department.department_id
WHERE 
    employee.salary > (
        SELECT 
            salary
        FROM 
            employee
        WHERE 
            department_id = 30
    );

10.查出年份、利润、年度增长比。
SELECT 
    p1.year,
    p1.profit,
    (p1.profit - p2.profit) / p2.profit AS annual_growth_rate
FROM 
    profits p1
JOIN 
    profits p2 ON p1.year = p2.year + 1
ORDER BY 
    p1.year;


码云地址:https://gitee.com/NMG_DDNL/nmg_-ddnl.git
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值