Как выбрать несколько столбцов, сохраняя при этом один из них - PullRequest
0 голосов
/ 06 июня 2018

Я хочу выбрать два столбца (A & B) из таблицы и сохранить только отдельные значения одного из них (A).Однако одно значение A может отображаться на несколько значений B. Поэтому следующий запрос не будет работать

select distinct A, B from table1

Я думаю о чем-то вроде этого:

select A, agg(B) from table1 group by A

Я хочуagg функция для случайного выбора одного значения из B при группировке A. Как это сделать в Postgres?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Если вам нужно произвольное значение («любое старое значение»), тогда min() и max() являются произвольными значениями:

select a, min(b) as b
from table1
group by a;

Если вы хотите неопределенное значение («значение из любой строки, которая соответствует»), тогда:

select distinct on (a) a, b
from table1
order by a;

Если вы хотите случайное значение («значение из строки случайного соответствия, выбранной изравномерное распределение "), тогда:

select distinct on (a) a, b
from table1
order by a, random();

Другими словами, определение" случайный "отличается от" произвольного "и" неопределенного ".Тем не менее, distinct on, вероятно, то, что вы хотите вместе.

0 голосов
/ 06 июня 2018

Используйте string_agg с запятой:

select A, string_agg(distinct B,',') from table1 group by A;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...