Вот моя отсталая версия, но никаких дополнительных знаний SQL не требуется;)
SELECT CASE WHEN home_city < away_city THEN CONCAT(home_city, ',', away_city) ELSE CONCAT(away_city, ',', home_city) END as cities, COUNT(*) as count
FROM X2
GROUP BY CASE WHEN home_city < away_city THEN CONCAT(home_city, ',', away_city) ELSE CONCAT(away_city, ',', home_city) END;
--drop table X2;
create table X2
(home_city varchar(255), away_city varchar(255));
insert into X2 values ('Valencia','Madrid');
insert into X2 values ('Barcelona','Madrid');
insert into X2 values ('Madrid','Valencia');
insert into X2 values ('Alicante','Castellon');
insert into X2 values ('Madrid','Valencia');
insert into X2 values ('Castellon','Alicante');
insert into X2 values ('Valencia','Madrid');
SELECT CASE WHEN home_city < away_city THEN CONCAT(home_city, ',', away_city) ELSE CONCAT(away_city, ',', home_city) END as cities, COUNT(*) as count
FROM X2
GROUP BY CASE WHEN home_city < away_city THEN CONCAT(home_city, ',', away_city) ELSE CONCAT(away_city, ',', home_city) END;
cities count
Alicante,Castellon 2
Barcelona,Madrid 1
Madrid,Valencia 4