SQL Запрос на выборку двух записей для каждого идентификатора - PullRequest
0 голосов
/ 09 января 2020

предположим, у меня есть эта таблица

ID  CLASS
1   A
1   A
1   A
2   A
2   B
2   B
3   C
4   C

как извлечь две случайные записи для каждого идентификатора, используя Oracle SQL

Ответы [ 2 ]

2 голосов
/ 09 января 2020
WITH cte AS (SELECT id, 
                    class, 
                    ROW_NUMBER() OVER ( PARTITION BY id ORDER BY DBMS_RANDOM.NORMAL ) rn
             FROM test)
SELECT id, class
FROM cte 
WHERE rn <= 2

скрипка

0 голосов
/ 09 января 2020
with t (ID, CLASS) as (
select 1 , 'A' from dual union all
select 1 , 'A' from dual union all 
select 1 , 'A' from dual union all 
select 2 , 'A' from dual union all 
select 2 , 'B' from dual union all 
select 2 , 'B' from dual union all 
select 3 , 'C' from dual union all 
select 4 , 'C' from dual 
)
select * from (
select t.*, row_number() over(partition by id order by null) rn from t 
)
where rn <= 2
;

, если вы не укажете порядок, oracle по умолчанию будет возвращать строки случайным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...