Привет. Как запросить общий счет для каждой пары, где порядок пары игнорируется в MySQL? - PullRequest
1 голос
/ 20 марта 2020
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. Спасибо.

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Вы можете использовать least() и greatest() и group by:

select least(letter1, letter2), greatest(letter1, letter2), sum(score)
from t
group by least(letter1, letter2), greatest(letter1, letter2);
0 голосов
/ 20 марта 2020

Вы также можете использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...