У меня есть таблица базы данных в формате значения атрибута сущности, которая выглядит следующим образом:
Я хочу выбрать все строки, которые имеют одинаковые значения для столбцов «сущность» и «атрибут», но имеют разные значения для столбца «значение». Несколько строк с одинаковыми значениями для всех трех столбцов должны рассматриваться как одна строка. Я достиг этого, используя SELECT DISTINCT.
SELECT entity_id, attribute_name, COUNT(attribute_name) AS NumOcc
FROM (SELECT DISTINCT * FROM radiology) x
GROUP BY entity_id,attribute_name
HAVING COUNT(attribute_name) > 1
Ответ на этот запрос
Однако я прочитал, что использование SELECT DISTINCT довольно дорого. Я планирую использовать этот запрос для очень больших таблиц, я ищу способ оптимизировать этот запрос, возможно, без использования SELECT DISTINCT.
Я использую PostgreSQL 10.3