Требуется выбрать столбец, случайные значения столбца из таблицы - PullRequest
0 голосов
/ 22 октября 2019

Я хочу выбрать случайные значения столбцов из таблицы, не повторяя его случайное значение из второго столбца

select signer,  ( (SELECT  SIGNER 
                   FROM TABLE SAMPLE(10) 
                   WHERE ROWNUM <= 1) )as signrand 
FROM TABLE ;

Фактический результат запроса выше:

signer,                signrand   
____________________________________________
MICHAEL MCLEAN         BARRY NEVILLE PITT
BARRY NEVILLE PITT     BARRY NEVILLE PITT
GREGORY DONALD MILNE   BARRY NEVILLE PITT
GREGORY DONALD MILNE   BARRY NEVILLE PITT
GREGORY DONALD MILNE   BARRY NEVILLE PITT
BARRY NEVILLE PITT     BARRY NEVILLE PITT

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете использовать аналитическую функцию row_number в двух подзапросах и различной логике, чтобы упорядочить signer в предложении order by, а затем объединить их на основе этого (rn). Это предотвратит повторяющиеся имена как случайные значения.

With dataa(signer, minl) as
(Select signer, 
        min(length(signer)) 
          over () as minl from table),
dataa_rand(signer, rnrand, rnnorm) as
(Select signer, 
        row_number() 
          over (order by substr(signer, dbms_random.value * (minl-1), 1)) as rnrand,
        row_number()
         over (order by signer) as rnnorm
  from dataa)
--
Select a.signer, b.signer
From dataa_rand a join dataa_rand b
On (a.rnnorm = b.rnrand)

Вы можете использовать любую логику для заказа signer. Мой запрос - только мысль в правильном направлении.

Приветствия !!

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