Выбор строк, у которых нет дубликатов

#sql #postgresql

#sql #postgresql

Вопрос:

Допустим, у меня есть следующая таблица:

 | sku | id | value | count |
|-----|----|-------|-------|
| A   | 1  | 1     | 2     |
| A   | 1  | 2     | 2     |
| A   | 3  | 3     | 3     |
 

Я хочу выбрать строки, которые не имеют одинакового количества для одного и того же идентификатора. Итак, мой желаемый результат:

 | sku | id | value | count |
|-----|----|-------|-------|
| A   | 3  | 3     | 3     |
 

Мне нужно что-то, что работает с Postgres 10

Комментарии:

1. Под «количеством» вы подразумеваете count столбец или количество строк?

Ответ №1:

Простой метод — это оконные функции:

 select t.*
from (select t.*, count(*) over (partition by sku, id) as cnt
      from t
     ) t
where cnt = 1;
 

Предполагается, что вы действительно имеете в виду комбинацию sku / id.