Страница 1 из 1

Вопрос по счетчикам в запросах

Добавлено: 15 янв 2008, 11:16
gopher
Задача такая: select запрос должен получить выборку, в которой отброшены 3 самых больших и три самых маленьких значения. Ясно, что делать надо как то при помощи first и skip. Как конкретно?

Добавлено: 15 янв 2008, 11:24
WildSery
1. Версия сервера
2. Цена решения

Добавлено: 15 янв 2008, 15:50
kdv
Как конкретно?
это что, задача на сообразительность?
никак. потому что сколько записей в выборке - неизвестно. допустим, skip пропустит нужное число, а 3 последних ты сам выкинь.

Re: Вопрос по счетчикам в запросах

Добавлено: 15 янв 2008, 16:11
Kotъ-Begemotъ
gopher писал(а):Задача такая: select запрос должен получить выборку, в которой отброшены 3 самых больших и три самых маленьких значения. Ясно, что делать надо как то при помощи first и skip. Как конкретно?
Как вариант промежуточным сохранением результата первого запроса в таблицу. Затем к этой таблице запрос со скипом, выбирающим записи с 4-й до конца, опять сохранение и снова запрос... Работать будет, хотя возможно есть и более правильные методы :)

Re: Вопрос по счетчикам в запросах

Добавлено: 15 янв 2008, 16:29
dragon_art
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)) 

Добавлено: 15 янв 2008, 22:14
WildSery
Вот подрядились решать. А задачка даже не сформулирована толком.
Что должно получиться на таком ряде:
1, 1, 2, 2, 3, 3, 3, 3
А на таком:
1, 1, 1, 1, 1, 1, 1
Или на таком:
1, 1

Добавлено: 16 янв 2008, 06:37
dragon_art
согласно условиям задачи, в этих случаях будет пустая выборка :D

Re: Вопрос по счетчикам в запросах

Добавлено: 16 янв 2008, 07:25
stix-s
Kotъ-Begemotъ писал(а):
Как вариант промежуточным сохранением результата первого запроса в таблицу. Затем к этой таблице запрос со скипом, выбирающим записи с 4-й до конца, опять сохранение и снова запрос... Работать будет, хотя возможно есть и более правильные методы :)
как-то все сложно ты придумал, ХП проще да и запросом одним это можно реализовать
а вообще задача мутная какая-то, похоже либо на задачку в универе, либо на вопрос на тестировании.

Добавлено: 16 янв 2008, 10:33
WildSery
Раз уж такая тусовка... Вот ещё одна Ж для пинания:

Код: Выделить всё

select skip 3 *
  from (select skip 3 * from table1 order by <condition> desc) q
  order by <condition>

Добавлено: 16 янв 2008, 13:59
Attid
WildSery писал(а):Раз уж такая тусовка... Вот ещё одна Ж для пинания:

Код: Выделить всё

select skip 3 *
  from (select skip 3 * from table1 order by <condition> desc) q
  order by <condition>
только еще сгрупировать по <condition>

Добавлено: 16 янв 2008, 18:02
WildSery
Attid писал(а):только еще сгрупировать по <condition>
А вот это не факт. Задача по-прежнему сформулирована через Ж.