Как получить уникальное значение после удаления пробела и группировки по некоторому другому столбцу в postgres
У меня есть стол как
id type note
1 A ab cd
1 B cdef
1 A abd
1 A abcd
Я хочу получить все уникальные заметки после удаления пробела, поэтому мой результат будет таким
id type note
1 A ab cd
1 A abd
1 B cdef
потому что после удаления пробелов ab cd и abcd будут одинаковыми. Я использую Postgres. Обратите внимание, что столбец id не уникален.
2 ответа
Решение
Это классический групповой максимум, но вы просто группируете его по выражению, а не по столбцу
SELECT id, type, note FROM
(SELECT DISTINCT ON(replace(note,' ',''))
id
,type
,note
FROM table1
ORDER BY replace(note,' ','')
) AS q
Поскольку вы, кажется, используете Rails (в соответствии с вашими тегами), вы также можете использовать ActiveRecord, чтобы получить все ваши уникальные экземпляры note
, не учитывая любые пробелы:
WhateverModel.pluck("REPLACE(note, ' ', '')").uniq