sql - для каждого уникального значения в столбце образца 2 разных значения из другого столбца
Я застрял на сложной проблеме агрегата SQL.
Рассмотрим следующую таблицу / представление:
Column1 Column2
1 2564
2 6550
1 3578
2 6548
2 4789
1 9876
Я хотел бы разработать запрос, чтобы сделать следующее:
Для каждого отдельного значения Column1 выберите 2х записей. Стратегия выборки может быть своего рода начальной загрузкой / повторной выборкой, поскольку точек данных может быть не слишком много.
Таким образом таблица станет:
Column1 Column2
1 9876
1 3578
2 6548
2 6550
Платформа: MS SQL
Любые ответы приветствуются.
1 ответ
Решение
Для случайной выборки без замены:
select t.*
from (select t.*,
row_number() over (partition by column1 order by newid()) as seqnum
from t
) t
where seqnum <= 2;
Или, альтернативно:
select top (2) with ties t.*
from t
order by row_number() over (partition by id order by newid());
Для случайной выборки с заменой:
С заменой:
select *
from ((select top (1) with ties t.*
from t
order by row_number() over (partition by id order by newid())
)
union all
(select top (1) with ties t.*
from t
order by row_number() over (partition by id order by newid())
)
) x;