MySQL 合并查询/从另一个中减去 1

MySQL combining queries/ subtracting 1 from the other

您好 MySQL 我正在尝试了解在总部工作的女性客户代表与不在总部工作的女性客户代表之间的平均工资差异。

我尝试了几种不同的方法,但我无法弄清楚。这是我目前所拥有的:

SELECT avg(employees.salaries)
FROM employees
inner join location
on employees.location = location.location
WHERE gender = 'F' AND title = 'account rep'

Table 1: 员工

+------+-----------+-----------+-------------+-------------+--------+----------+
|  ID  | LastName  | FirstName |  Location   |    Title    | Gender | salaries |
+------+-----------+-----------+-------------+-------------+--------+----------+
| 1100 | Johnson   | James     | Chicago     | Account Rep | M      |     2000 |
| 1200 | Smith     | Sam       | Chicago     | Account Rep | M      |     3000 |
| 1300 | Mage      | Sydney    | Boston      | Account Rep | F      |     4000 |
| 1400 | Engl      | Beth      | Dallas      | Account Rep | F      |     2500 |
| 1500 | Ali       | Tyler     | Miami       | Account Rep | M      |     3500 |
| 1600 | Rubin     | Patricia  | Los Angeles | Account Rep | F      |     4400 |
| 1700 | Childress | Rubin     | Los Angeles | Account Rep | M      |     1500 |
+------+-----------+-----------+-------------+-------------+--------+----------+

table 2: 位置

+-------------+----------------+-----------+
|  Location   | Headquarters   |      Code |
+-------------+----------------+-----------+
| Dallas      | No             |        12 |
| Los Angeles | Yes            |        10 |
| Chicago     | No             |        11 |
| Denver      | Yes            |        10 |
| Miami       | Yes            |        10 |
+-------------+----------------+-----------+

你的问题已经解决了。您只需要聚合函数中的条件逻辑:

select
    avg(case when l.headquarters = 'Yes' then salaries end)
    - avg(case when l.headquarters = 'No' then salaries end) avg_diff
from employees e
inner join locations l on l.location = e.location
where e.gender = 'F' and e.title = 'Account Rep'