Вопрос по счетчикам в запросах
Вопрос по счетчикам в запросах
Задача такая: select запрос должен получить выборку, в которой отброшены 3 самых больших и три самых маленьких значения. Ясно, что делать надо как то при помощи first и skip. Как конкретно?
-
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
Re: Вопрос по счетчикам в запросах
Как вариант промежуточным сохранением результата первого запроса в таблицу. Затем к этой таблице запрос со скипом, выбирающим записи с 4-й до конца, опять сохранение и снова запрос... Работать будет, хотя возможно есть и более правильные методыgopher писал(а):Задача такая: select запрос должен получить выборку, в которой отброшены 3 самых больших и три самых маленьких значения. Ясно, что делать надо как то при помощи first и skip. Как конкретно?
-
- Сообщения: 18
- Зарегистрирован: 20 сен 2006, 09:18
Re: Вопрос по счетчикам в запросах
Предлагаю такой вариант, но за скорость не отвечаю:gopher писал(а):Задача такая... Как конкретно?
Код: Выделить всё
select *
from some_tbl s
where
(s.fld1 not in (select first 3 s2.fld1 from some_tbl s2 order buy s2.fld1 ASC)) and
(s.fld1 not in (select first 3 s2.fld1 from some_tbl s2 order buy s2.fld1 DESC))
-
- Сообщения: 18
- Зарегистрирован: 20 сен 2006, 09:18
Re: Вопрос по счетчикам в запросах
как-то все сложно ты придумал, ХП проще да и запросом одним это можно реализоватьKotъ-Begemotъ писал(а):
Как вариант промежуточным сохранением результата первого запроса в таблицу. Затем к этой таблице запрос со скипом, выбирающим записи с 4-й до конца, опять сохранение и снова запрос... Работать будет, хотя возможно есть и более правильные методы
а вообще задача мутная какая-то, похоже либо на задачку в универе, либо на вопрос на тестировании.
Раз уж такая тусовка... Вот ещё одна Ж для пинания:
Код: Выделить всё
select skip 3 *
from (select skip 3 * from table1 order by <condition> desc) q
order by <condition>
только еще сгрупировать по <condition>WildSery писал(а):Раз уж такая тусовка... Вот ещё одна Ж для пинания:Код: Выделить всё
select skip 3 * from (select skip 3 * from table1 order by <condition> desc) q order by <condition>