可以用一段SQL语句实现自连接查询每个工种的工种名和员工的个数,并且按员工个数降序排列 查询每个工资级别的个数大于20的个数,并且按工资级别降序排 序
时间: 2024-01-29 07:03:30 浏览: 20
好的,以下是 SQL 语句实现自连接查询每个工种的工种名和员工的个数,并且按员工个数降序排列,同时查询每个工资级别的个数大于20的个数,并且按工资级别降序排列的方法:
SELECT w1.job_name, COUNT(w2.employee_id) AS employee_count
FROM works w1 INNER JOIN works w2 ON w1.job_id = w2.job_id
GROUP BY w1.job_name
ORDER BY employee_count DESC;
SELECT w1.salary_level, COUNT(*) AS salary_count
FROM works w1 GROUP BY w1.salary_level
HAVING COUNT(*) > 20
ORDER BY w1.salary_level DESC;
注意:以上 SQL 语句仅供参考,具体情况应根据实际需要再做相应的调整和修改。
相关问题
如何通过自连接查询每个工种的工种名和员工的个数,并且按员工个数降序排列 查询每个工资级别的个数大于20的个数,并且按工资级别降序排 序
您好!感谢您向我提出问题。针对您的第一个问题,您可以使用以下的SQL语句进行查询:
SELECT 工种名, COUNT(*) AS 员工个数
FROM 表名
GROUP BY 工种名
ORDER BY 员工个数 DESC;
其中,表名为包含员工信息的表名,工种名为员工所属的工种名称。使用GROUP BY语句按照工种名进行分组,使用COUNT函数统计每个工种名对应的员工个数,最后使用ORDER BY语句按员工个数降序排列。
针对您的第二个问题,您可以使用以下的SQL语句进行查询:
SELECT 工资级别, COUNT(*) AS 个数
FROM 表名
GROUP BY 工资级别
HAVING COUNT(*) > 20
ORDER BY 工资级别 DESC;
其中,表名为包含员工信息的表名,工资级别为员工所属的工资级别。使用GROUP BY语句按照工资级别进行分组,使用COUNT函数统计每个工资级别出现的次数,使用HAVING语句筛选出个数大于20的工资级别,最后使用ORDER BY语句按工资级别降序排列。
希望以上答案能够帮助您解决问题,如有任何疑问,请随时向我提出。
用SQL语句实现每个部门经理只对自己所属部门的员工具有查询权
假设有两个表,一个是员工表(employee),包含员工ID(id)、员工姓名(name)、所属部门(department)等字段;另一个是部门表(department),包含部门ID(id)、部门名称(name)、部门经理(manager)等字段。
可以通过以下SQL语句实现每个部门经理只对自己所属部门的员工具有查询权:
```
SELECT e.id, e.name, e.department
FROM employee e
JOIN department d ON e.department = d.id
WHERE d.manager = {当前用户ID}
```
需要将{当前用户ID}替换为实际的当前用户ID。这个SQL语句使用了JOIN连接语句将员工表和部门表联合查询,然后通过WHERE子句限制了只能查询当前用户所管理的部门的员工信息。