Я работаю на PostgreSQL на столе с этой структурой:Выберите строки, где столбец 1 значение совпадает, но значение столбца 2 отличается в PostgreSQL
________________
|project|person|
|_______|______|
|1 |P1 |
|1 |P2 |
|2 |P3 |
|2 |P3 |
|3 |P4 |
|_______|______|
Я хотел бы написать запрос SQL для выбора ТОЛЬКО строки, в которых один проект имеет более одного человека. Другими словами, я хотел бы выбрать все строки, где проект один и тот же, но человек отличается, за исключением других строк. В моем примере он вернул бы только два первых ряда:
________________
|project|person|
|_______|______|
|1 |P1 |
|1 |P2 |
|_______|______|
Я не могу обернуть свою голову вокруг этого. Я видел this question, который в основном противоположный, но я не вижу, как заставить его работать для меня.
Я пытался возиться с COUNT или HAVING в течение длительного времени, но я не могу понять логику того, как я должен построить этот запрос. Например, я попробовал:
SELECT t.person, t.project
FROM table t
GROUP BY r.ide_proj, r.ide_pers
HAVING COUNT(t.person) > 1
, но это дает мне странные результаты, в том числе строк whre одного проекта есть только один человек, или наоборот.
Может ли кто-нибудь помочь мне с этой маленькой проблемой?
Большое спасибо!
Вы не можете добавить ожидаемый результат? И покажите нам свою текущую попытку запроса! – jarlh
вы попробовали что-то вроде этого: 'select * from YOURTABLE со счетом (person)> 1'? – AlainIb
@Alainlb 'count (Distinct person)> 1 проект 2 имел p3 два раза. – xQbert