У меня есть таблица примерно так:
index|from | to
------------------
1 | ABC | DEF
2 | ABC | GHI
3 | ABC | GHI
4 | ABC | JKL
5 | ABC | JKL
6 | ABC | JKL
7 | DEF | ABC
8 | DEF | GHI
9 | DEF | JKL
10 | GHI | ABC
11 | GHI | ABC
12 | GHI | ABC
13 | JKL | DEF
И мне нужно посчитать, как общее время между точками (независимо от направления) получить результат:
A | B | count
-----------------
ABC | DEF | 2
ABC | GHI | 5
ABC | JKL | 3
DEF | GHI | 1
DEF | JKL | 2
Пока я могу получить:
SELECT `a`.`from` as `A`, `a`.`to` as `B`, (`a`.`count` + `b`.`count`) as `count`
FROM
(SELECT `from`, `to`, count(*) as `count`
FROM `table`
GROUP BY 1,2) `a`
LEFT OUTER JOIN
(SELECT `from`,`to`, count(*) as `count`
FROM `table`
GROUP BY 1,2) `b`
ON `a`.`from` = `b`.`to`
AND `a`.`to` = `b`.`from`
Но я не уверен, как удалить замененные дубликаты A / B.