Как выбрать случайную пробную версию с SQL? (Суд над Бернулли) - PullRequest
2 голосов
/ 01 декабря 2010

Для каждого существующего родителя я бы хотел выбрать 1 дочернюю строку случайным образом. Структура таблицы выглядит следующим образом:

parent
  id

child
   parent_id
   id
   rank

, где есть 1..N дочерних записей для каждого родителя, и ранг является уникальным для каждого родителя с 1 до N.

Вывод должен быть таким:

parent    child    rank
--------+-------+-------
 1        34       7
 2        56       8
...

Каждый родитель создает одну дочернюю строку. (Это послужит основой для испытаний Бернулли.)

(PostgreSQL имеет функцию random (), которая дает число от 0 до 1.)

1 Ответ

1 голос
/ 01 декабря 2010

совсем не знаком с postgresql, но, может быть, что-то вроде этого?

SELECT  DISTINCT ON (parent_id) parent_id as "parent", id as "child", rank
FROM    child c
ORDER BY
        parent_id, random()
...