【问题标题】:can you explain the logic of this query你能解释一下这个查询的逻辑吗
【发布时间】:2022-10-13 18:02:04
【问题描述】:

我有这个查询可以找到薪水第四高的老师的名字。我不明白这部分

SELECT COUNT (DISTINCT T2.salary)
FROM teacher as T2
WHERE T2.salary > T1.salary
) = 3

SELECT name
FROM teacher as T1
WHERE (
SELECT COUNT (DISTINCT T2.salary)
FROM teacher as T2
WHERE T2.salary > T1.salary
) = 3;

我理解count 的方式是它给出了最终结果,而不是我们可以通过指定一个数字来中断它的工作。

【问题讨论】:

  • 可以分享一下老师桌长什么样吗?或者,如果它是一个视图/cte 定义

标签: sql postgresql


【解决方案1】:

我不会那样写,但它的作用是计算,对于每个老师来说,有多少薪水高于他/她的薪水。

如果 3 人的工资高于给定教师的工资,那么该教师必须排在第 4 位。

对于大型表,此查询的性能将是灾难性的。您应该改用rank 窗口函数。

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 2017-03-30
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多