Letter 1 | letter 2 | Score ----------------------- A | B | 5 B | A | 6 C | D | 9 D | C | 7
В этом случае я хочу найти общий балл для (A, B), который равен 5 + 6 = 11, и общий балл для (C, D), который равен 9 + 7 = 16. Спасибо.
Вы можете использовать least() и greatest() и group by:
least()
greatest()
group by
select least(letter1, letter2), greatest(letter1, letter2), sum(score) from t group by least(letter1, letter2), greatest(letter1, letter2);
Вы также можете использовать case выражение с агрегацией:
case
select (case when letter1 < letter2 then letter1 else letter2 end) as letter1, (case when letter1 > letter2 then letter1 else letter2 end) as letter2, sum(score) as total_score from table t group by (case when letter1 < letter2 then letter1 else letter2 end), (case when letter1 > letter2 then letter1 else letter2 end);