Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как выбрать каждую десятую запись из таблицы  [new]
greg_123
Member

Откуда:
Сообщений: 153
Добрый вечер, на одном форуме наткнулся на вопрос, показавшийся мне интересным, но оставшийся без ответа:

Дана таблица email (id, address). Нужно написать запрос, который будет выбирать каждую 10 строку.
Запрос должен работать и, если id по порядку, и, если не по порядку.

Может кто-нибудь сможет ответить? Заранее спасибо.
19 окт 09, 20:36    [7808253]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
iljy
Member

Откуда:
Сообщений: 8711
greg_123,

а как вы определяете каждую 10 если не по порядку? По порядку -
select * from
(
  select *, row_number() over(order by id) N
  from email
) t
where N % 10 = 0
19 окт 09, 20:41    [7808274]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
greg_123
Member

Откуда:
Сообщений: 153
А почему нельзя (если по порядку):

select * from where id % 10 = 0
19 окт 09, 21:02    [7808341]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
aklerk
Member

Откуда:
Сообщений: 66
В теории реляционных БД вообще нет понятия упорядоченности кортежей...
19 окт 09, 21:06    [7808358]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
select top 10 percent * from email

А вот ещё один способ достигающий цели вашей задачи:
WAITFOR DELAY '00:00:05';
19 окт 09, 22:26    [7808553]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
iljy
Member

Откуда:
Сообщений: 8711
greg_123
А почему нельзя (если по порядку):

select * from where id % 10 = 0


так можно если в нумерации нет разрывов. Вы вообще с постановкой задачи определитесь - что вы конкретно хотите.

Mnior
select top 10 percent * from email


вариант, но только выдает он не "каждую 10ю", а просто 10ю часть. В принципе можно и так условие трактовать.

Короче, ТС, определитесь чего хотите.
20 окт 09, 00:20    [7808797]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как выбрать каждую десятую запись из таблицы  [new]
Sergio Kornelius
Member

Откуда:
Сообщений: 3
вот я тоже задачусь такой же проблемой.
надо отсортировать например эту таблицу по алфавиту адресов, а
потом вытащить каждую десятую.
в моем же конкретном нужно чтобы было вытащено каждая десятая и следующая за ней и опять десятая и следующая за ней и так далее.
29 фев 12, 21:51    [12173434]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
step_ks
Member

Откуда:
Сообщений: 936
7808274 чем не подходит?
29 фев 12, 22:33    [12173538]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
Sergio Kornelius
вот я тоже задачусь такой же проблемой.
надо отсортировать например эту таблицу по алфавиту адресов, а
потом вытащить каждую десятую.
в моем же конкретном нужно чтобы было вытащено каждая десятая и следующая за ней и опять десятая и следующая за ней и так далее.
Можно сделать, как тут написали.
29 фев 12, 22:56    [12173614]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
select * from
(
  select *, row_number() over(order by id) N
  from email
) t
where N>1 and N%10 IN(0,1)
order by id;
1 мар 12, 10:44    [12174965]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать каждую десятую запись из таблицы  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
iap
select * from
(
  select *, row_number() over(order by id) N
  from email
) t
where N>1 and N%10 IN(0,1)
order by id;
Только over(order by алфавиту_адресов)
1 мар 12, 13:36    [12176523]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить