С подзапросом, который подсчитывает, сколько раз страна появляется в таблице:
SELECT
CASE
WHEN (SELECT COUNT(*) FROM customer WHERE country = c.country) = 1 THEN 'Other'
ELSE c.country
END country
FROM customer c
Или с присоединением таблицы к подзапросу, который возвращает все счетчики всех стран:
SELECT
CASE
WHEN g.counter = 1 THEN 'Other'
ELSE c.country
END country
FROM customer c INNER JOIN (
SELECT country, COUNT(*) counter
FROM customer
GROUP BY country
) g ON g.country = c.country
Если вы хотите, чтобы ваша таблица была сгруппирована по результату этого оператора CASE, используйте псевдоним, чтобы отличить ее от столбца таблицы country
:
SELECT
CASE
WHEN (SELECT COUNT(*) FROM customer WHERE country = c.country) = 1 THEN 'Other'
ELSE c.country
END _country
FROM customer c
GROUP BY _country