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

Откуда:
Сообщений: 131
Здравствуйте,
Подскажите, как выбрать каждую 3-ю строку в таблице?
6 сен 13, 16:07    [14805560]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
zxc1257
Member

Откуда:
Сообщений: 71
kolotov
Здравствуйте,
Подскажите, как выбрать каждую 3-ю строку в таблице?


with t(n) as
(
	select 1 union all
	select 2 union all
	select 3 union all
	select 4 union all
	select 5 union all
	select 6
)
select *
from
(
	select *, row_number() over(order by n) % 3 as z
	from t
) d
where z = 0
6 сен 13, 16:11    [14805580]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
djХомяГ_
Guest
1 пронумервоать записи (если версия сервера позволяет ROW_NUMBER() )
2 в where написать ПОЛЕ_НОМЕР_ЗАПИСИ % 3=0
6 сен 13, 16:13    [14805587]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
zxc1257
Member

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

with t(n) as
(
	select 1 union all
	select 2 union all
	select 3 union all
	select 4 union all
	select 5 union all
	select 6
)
select top(1) with ties *
from t
order by row_number() over(order by n) % 3
6 сен 13, 16:13    [14805588]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
kolotov
Member

Откуда:
Сообщений: 131
такой способ нашел

select r.* from (
    select t.*,  row _ number () over(order by t.id) row
    from dbo.table t 
) r
where r.row % 3 = 0
6 сен 13, 16:15    [14805598]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
Например так:
declare @n int  
declare @tb_tst table (id int identity(1,1), val nvarchar(12)) 

set @n = 1

while @n < 64 
begin 
	insert into @tb_tst select 'Строка ' + cast(@n as nvarchar(2))
	set @n = @n + 1
end 

select * 
from @tb_tst 
where id%3 = 0 
6 сен 13, 16:15    [14805599]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
kolotov
Здравствуйте,
Подскажите, как выбрать каждую 3-ю строку в таблице?


Выбирать все строки, каждую первую и вторую -- пропускать и не обрабатывать. Каждую третью -- обрабатывать.
6 сен 13, 19:16    [14806457]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
zxc1257
zxc1257,

with t(n) as
(
	select 1 union all
	select 2 union all
	select 3 union all
	select 4 union all
	select 5 union all
	select 6
)
select top(1) with ties *
from t
order by row_number() over(order by n) % 3
Не совсем точно, ибо ROW_NUMBER() нумерует с 1, а не с 0
6 сен 13, 19:19    [14806471]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
zxc1257
Member

Откуда:
Сообщений: 71
iap
zxc1257
zxc1257,

with t(n) as
(
	select 1 union all
	select 2 union all
	select 3 union all
	select 4 union all
	select 5 union all
	select 6
)
select top(1) with ties *
from t
order by row_number() over(order by n) % 3
Не совсем точно, ибо ROW_NUMBER() нумерует с 1, а не с 0


rn % 3 ведь даст 0 на каждой третьей, а order by rn % 3 подымет вверх нули.
6 сен 13, 20:33    [14806744]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
kolotov
Member

Откуда:
Сообщений: 131
Подскажите, как еще выбрать не каждую 3-ю строчку, а любые 3 строки ?
10 сен 13, 10:00    [14818025]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
qwerty112
Guest
kolotov
Подскажите, как еще выбрать не каждую 3-ю строчку, а любые 3 строки ?

14815907
10 сен 13, 10:06    [14818061]     Ответить | Цитировать Сообщить модератору
 Re: выбрать каждую 3-ю строку  [new]
Гость333
Member

Откуда:
Сообщений: 3683
qwerty112
kolotov
Подскажите, как еще выбрать не каждую 3-ю строчку, а любые 3 строки ?

14815907

Или так: Рандомная выборка
10 сен 13, 10:13    [14818086]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить