У меня возникла такая проблема. Существует таблица A, я хочу ее заполнить с помощью команды `group by x by diff (которая является абс (x-y)) с поправкойАгрегат с groupby, но с отличным условием на агрегированном столбце
x и y всегда идет постепенно. И х с меньшим значением будет иметь приоритет, когда два разных х можно в паре с таким же у
x y diff
1 2 1
1 4 3
1 6 5
3 2 1
3 4 1
3 6 3
4.5 2 3.5
4.5 4 0.5
4.5 6 1.5
агрегатной функции Я хочу это:
взять у в каждой группе, которая имеет наименьшее значение с х (наименьшее значение разности).
НО, что у которого взят не может быть использован повторно. (Например, у = 2 будет принято в (х = 1) группы, так что не может быть повторно использован в (х = 3) группы)
Ожидаемое результат:
x y diff
1 2 1
3 4 1
4.5 4 0.5
кажется очень сложным в простом SQL. Я использую PostgreSQL. Реальные данные будут гораздо сложнее и дольше, чем эта идея стреляющий например
Ваши требования не определяют уникальный результат. Если один и тот же 'y' имеет минимальную разницу между двумя разными значениями' x', как вы должны определить, с каким 'x' следует с ним связать? Помните, что таблица базы данных может иметь физический порядок для строк, но она не имеет логического порядка. –
Итак 'diff' равно' abs (x-y) '? Вы должны написать это явно, если это так. –
Что делать, если все значения y с наименьшим значением diff уже использовались, например.для x = 3, y = 2 и y = 4 с diff 1 уже использовались, если это вернет y = 6? – dnoeth