mletov: ну допустим пара согласно бд получается что в санкт петербурге много людей с хобби кораблестроение , а в москве много людей с хобби конный спорт , но мы не знаем этого , нам надо как то выявить эту частоту
SELECT *
FROM
(
SELECT t1.*,
RANK() OVER(ORDER BY cnt DESC PARTITION BY city) AS rn2
FROM
(
SELECT city, hobby, COUNT(hobby) AS cnt
FROM table
GROUP BY city, hobby
) AS t1
ORDER BY city, cnt DESC
) AS t1
WHERE rn2=1
Вот очень приблизительное решение, показывающее в каком направлении думать. Без конкретного примера с тестовыми данными задача мне все равно до конца непонятна.