2016-01-29 5 views
-1
declare @table as table 
(
    id int identity(1,1), salary int 
) 

insert into @table values(1000) 
insert into @table values(2000) 
insert into @table values(5000) 
insert into @table values(4000) 
insert into @table values(1000) 
insert into @table values(8000) 
insert into @table values(9000) 
insert into @table values(6000) 
insert into @table values(1000) 
insert into @table values(7000) 
insert into @table values(3000) 

select 
    A.salary 
from 
    @table as A 
where 
    (select count(*) 
    from @table B 
    where b.salary < A.salary) > 5 
+2

Почему бы вам просто не запустить ** самостоятельно и не видеть? –

+0

но почему этот результат приносит i m не понял результат запроса – baj9032

ответ

1

Он будет отображать зарплату, превышающую 5000

enter image description here

+0

Venkatesh Rangu: почему? – baj9032

+0

@AnkitBhanderi, потому что 5000 имеют более 5 записей меньше, чем он сам. 3 - 1000 1 - 2000 1 - 3000 1 - 4000 общее количество составляет 6 (6> 5) если 5000 имеет более 5 записей другие, которые больше, чем 5000 будет иметь более 5 – halit

+1

здесь вы проверяете номер 5 , где b.salary < A.salary)> 5 означает, что я полагаю, что номер 1 означает, что он отобразит количество зарплаты b, а это больше, чем зарплата a, а затем отображает результат , в основном это зависит от числа, указанного в условие – Chanukya

0

В запросе, вы самостоятельно присоединиться к столу.

И Вы подсчитываете количество записей из внутренней таблицы, которые превышают текущую запись внешней таблицы.

Так это даст вам 5 записей из table A, которые выше, чем 5 записей из внутреннего запроса

Sub Query select count(*) from @table B where b.salary < A.salary даст вам количество записей, которые меньше зарплаты, чем table A

и таким образом, результат.

0

ваш запрос собирается возврат

5000 
    8000 
    9000 
    6000 
    7000 

потому, что в соответствии с вашим запросом будет проверить, является ли запись больше то 6 другие записи таблицы или нет. как внутренний запрос, подсчитывающий его для вас.

если удалить все записи 1000 результат изменится на

8000 
    9000 

, потому что теперь только эти две записи больше чем 6 других записей таблиц.

Смежные вопросы