【发布时间】:2021-02-18 00:51:12
【问题描述】:
编写 SQL 查询以查找在 IT 部门获得前三名薪水的员工。
我的查询:
SELECT TOP(3) WITH TIES
d.name AS department, e.name AS employee, e.salary
FROM
employee e, department d
WHERE
e.departmentid = d.id AND d.name ='IT'
ORDER BY
e.salary DESC
这应该显示 4 个结果。因为我包括了关系。但由于某种原因,它不是。我不明白为什么。我需要前 3 名的薪水,包括领带。
我得到这个结果:
| Department | Employee | Salary |
|---|---|---|
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 85000 |
预期结果:
| Department | Employee | Salary |
|---|---|---|
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 85000 |
| IT | Will | 70000 |
员工表
| Id | Name | Salary | DepartmentId |
|---|---|---|---|
| 1 | Joe | 85000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Janet | 69000 | 1 |
| 6 | Randy | 85000 | 1 |
| 7 | Will | 70000 | 1 |
部门表:
| Id | Name |
|---|---|
| 1 | IT |
| 2 | Sales |
【问题讨论】:
-
salary的数据类型是什么?你为什么要使用旧式,连接? -
85000 是您所看到的,但可能不完全是这样,所以我的第一个猜测是它不是一个确切的平局。
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(近 30 年前),不鼓励使用它
标签: sql sql-server