Как мне в sql вывести самые популярные браузеры в регионах?

Рейтинг: 0Ответов: 1Опубликовано: 05.03.2023

Есть такая таблица:

region      browser
"Adygea"    "Chrome"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Firefox"
"Adygea"    "Opera"
"Adygea"    "Opera"
"Adygea"    "Safari"
"Adygea"    "Safari"
"Adygea"    "Safari"
"Adygea"    "Safari"
"Altai"     "Chrome"
"Altai"     "Chrome"
"Altai"     "Chrome"
"Altai"     "Chrome"
"Altai"     "Firefox"
"Altai"     "Firefox"
"Altai"     "Firefox"
"Altai"     "Firefox"
"Altai"     "Firefox"
"Altai"     "Opera"
"Altai"     "Opera"
"Altai"     "Safari"

Как мне в этой таблице вывести самые популярные браузеры в регионах?

Ответы

▲ 0Принят

Чтобы получить список самых популярных браузеров необходимо ответить на два вопроса, нужен список уникальных регионов и рейтинг браузеров в этих регионах, для этого необходимо два предварительных подзапроса, которые можно выполнить в CTE или в виде связанных подзапросов с LATERAL LIMIT последний вариант мне кажется более интересным:

SELECT rat.region, rat.browser, rat.rating FROM 
  (SELECT DISTINCT region FROM tbrowser) reg 
JOIN 
  LATERAL(SELECT region, browser, COUNT(*) rating FROM tbrowser 
  GROUP BY region, browser 
  HAVING region = reg.region ORDER BY region, rating DESC LIMIT 1) rat 
  ON reg.region = rat.region;