找出每个工作岗位的最高薪水,除manager之外sql
时间: 2024-12-08 19:21:35 浏览: 6
如果你想找出除"经理"(通常对应"Manager"或其他类似职位名称)之外的所有工作岗位(假设职位名称在`job_title`字段)的最高薪水,你需要首先过滤掉经理职位,然后对每个非经理岗位的工资进行排序并取最高值。下面是一个示例SQL查询:
```sql
WITH non_manager_salaries AS (
SELECT job_title, salary
FROM employees
WHERE job_title NOT LIKE '%Manager%'
)
SELECT job_title, MAX(salary) AS max_salary_per_job
FROM non_manager_salaries
GROUP BY job_title;
```
这个查询做了以下步骤:
1. `WITH non_manager_salaries AS ( ... )` - 使用 Common Table Expression (CTE) 创建了一个名为`non_manager_salaries`的临时表,只包含非经理职位的薪资。
2. `WHERE job_title NOT LIKE '%Manager%'` - 筛选出不是经理的职位。
3. `SELECT job_title, MAX(salary)` - 选取每个非经理职位的最大薪水。
4. `GROUP BY job_title` - 对每个工作职位分组,并计算每组的最大薪水。
相关问题
m ysql面试题sql语句
MySQL 面试时常常会考察 SQL 语句的相关知识,包括基础查询、索引优化、存储过程、视图、事务等方面的问题。下面列举几个常见的 MySQL 面试题及其解答示例:
1. **基础查询**:
- 示例:编写一个查询,获取所有员工姓名和薪水大于5000的记录。
```sql
SELECT name, salary FROM employees WHERE salary > 5000;
```
2. **关联查询**:
- 示例:查询某个部门的所有员工及其经理信息。
```sql
SELECT e.name AS employee_name, m.name AS manager_name
FROM employees e
JOIN managers m ON e.manager_id = m.id;
```
3. **分组统计**:
- 示例:计算每个城市的员工平均薪资。
```sql
SELECT city, AVG(salary) as avg_salary
FROM employees
GROUP BY city;
```
4. **子查询**:
- 示例:找出销售额最高的产品名称。
```sql
SELECT product_name
FROM products
WHERE id IN (SELECT product_id FROM sales ORDER BY sale_amount DESC LIMIT 1);
```
5. **索引优化**:
- 示例:解释为什么在 `last_login` 列上创建索引可以提高查询效率。
- 提问:如何确定是否需要为某个列添加索引?
阅读全文