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的列。这称为相关子查询。维基百科是一个很好的起点。