Вам необходимо самостоятельно присоединиться к значению, а не к равным идентификаторам. Затем сгруппируйте по паре идентификаторов. Используйте avg(value)
, чтобы получить среднее значение, и count(DISTINCT value)
в предложении HAVING
, чтобы проверить минимум трех общих значений.
SELECT t1.id,
t2.id,
avg(value)
FROM elbat t1
INNER JOIN elbat t2
ON t2.id <> t1.id
AND t2.value = t1.value
GROUP BY t1.id,
t2.id
HAVING count(DISTINCT value) >= 3;
Или удалите DISTINCT
, если это также совпадение, когда три значения являются общими, но по крайней мере два из них являются одинаковыми. И если вы не хотите, чтобы пары идентификаторов повторялись (в обратном порядке), измените <>
на <
или >
.