Sql 如何分部分分析下面的查询

Sql 如何分部分分析下面的查询,sql,Sql,如何分部分分析下面的查询 SELECT * FROM Employee Emp1 WHERE (N-1) = ( SELECT COUNT(DISTINCT(Emp2.Salary)) FROM Employee Emp2 WHERE Emp2.Salary > Emp1.Salary ) 请举例说明。这将给出第n个最高工资的员工记录。 这是一个相关子查询。内部查询在其WHERE子句中使用来自外部查询

如何分部分分析下面的查询

SELECT *
FROM Employee Emp1
WHERE (N-1) = (
           SELECT COUNT(DISTINCT(Emp2.Salary))
           FROM Employee Emp2
           WHERE Emp2.Salary > Emp1.Salary
           )

请举例说明。

这将给出第n个最高工资的员工记录。 这是一个相关子查询。内部查询在其WHERE子句中使用来自外部查询(在本例中为Emp1表)的值

假设sal有以下值:

100
300
500
200

你想在外部查询中找到第二高的sal,那么对于300(薪水),内部查询将返回1作为Emp2的计数。sal>Emp1.sal,即500(N-1,2-1=1)

问题是什么?听起来像是工作指令。请尝试一下。最简单的想法就是时间it@GordonLinoff:我不知道如何使用子查询分析计算where条件:编写查询的人不知道
distinct
做什么。因为distinct不是一个函数,表达式
distinct(emp2.salary)
给我的印象是,作者认为,并假设
distinct
只适用于“传递”给“函数”@avisingh05的列。这称为相关子查询。维基百科是一个很好的起点。