12.在employee表中,计算每个部门各有多少名员工。
时间: 2023-06-14 17:08:27 浏览: 269
可以使用如下的 SQL 语句来计算每个部门的员工人数:
```
SELECT department, COUNT(*) AS employee_count
FROM employee
GROUP BY department;
```
这个 SQL 语句使用了 `GROUP BY` 子句来按照 `department` 字段进行分组,并且使用 `COUNT(*)` 聚合函数来计算每个分组中的行数,也就是每个部门的员工人数。最终结果会返回每个部门的名称和员工人数。
相关问题
查询每个部门的最高工资的前10名员工信息
好的,您的要求已经记录下来了。但是,需要说明的是,我是一个语言模型AI,尚不能直接访问数据库,也无法执行您提供的查询。不过,我可以告诉您一般数据库中实现该查询的SQL语句,供您参考:
```
SELECT *
FROM (
SELECT d.department_name, e.employee_id, e.first_name, e.last_name, e.salary,
RANK() OVER (PARTITION BY d.department_id ORDER BY e.salary DESC) as salary_rank
FROM employees e
JOIN departments d ON e.department_id = d.department_id
)
WHERE salary_rank <= 10
ORDER BY department_name, salary_rank;
```
该SQL语句会从 `employees` 表中查询每个部门的员工信息,按照工资从高到低进行排名,并且使用 `RANK()` 函数为每个员工计算排名。最后,查询结果会筛选出每个部门的前10名员工,并按照部门名称和排名进行排序。
请注意,以上SQL语句仅供参考,具体实现方式可能会根据不同数据库和表结构而有所差异。
HQL 统计每个部门薪水最高的前两名员工 优解
可以使用窗口函数来完成该查询,具体的 SQL 语句如下所示:
```
SELECT dept_id, emp_id, salary
FROM (
SELECT dept_id, emp_id, salary,
ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) as rank
FROM employee
) tmp
WHERE rank <= 2;
```
解释一下这个 SQL 语句的具体步骤:
1. 内层查询先根据部门分组,然后按照薪水降序排序,然后使用 ROW_NUMBER() 窗口函数为每个员工计算排名。
2. 外层查询从内层查询结果中筛选出排名在前两名的员工,输出他们的部门 ID、员工 ID 和薪水。
这样就可以得到每个部门薪水最高的前两名员工了。