Уже есть 3 ответа, и ни один из них не является общим для большего количества городов.Попробуйте это:
SELECT City, COUNT(Number) AS ExclusiveNumbers
FROM (SELECT q2.City, q2.CityNumCount, b.Number
FROM MY_Table b INNER JOIN
(SELECT c.City, MAX(NumOccurs) AS CityNumCount
FROM My_Table c INNER JOIN
(SELECT Number, COUNT(City) AS NumOccurs
FROM My_Table
GROUP BY Number) q1 ON c.Number = q1.Number
GROUP BY c.City) q2 ON b.City = q2.City) q3
WHERE CityNumCount = 1
GROUP BY City
UNION
SELECT 'Combined', COUNT(DISTINCT Number)
FROM (SELECT q2.City, q2.CityNumCount, b.Number
FROM MY_Table b INNER JOIN
(SELECT c.City, MAX(NumOccurs) AS CityNumCount
FROM My_Table c INNER JOIN
(SELECT Number, COUNT(City) AS NumOccurs
FROM My_Table
GROUP BY Number) q1 ON c.Number = q1.Number
GROUP BY c.City) q2 ON b.City = q2.City) q3
WHERE CityNumCount > 1
Верхняя половина объединения работает, для каждого названия города, которое не имеет общих номеров с любым другим городом, сколько у него различных чисел.
Нижняя половина работаетВычислите количество различных чисел для городов, которые имеют общие номера с другими городами.Эти 2 цифры всегда будут складываться из числа различных чисел в исходной таблице.