Sobes.tech
Junior — Senior
58

Список городов с числом их пользователей, включая нулевые значения

Компании, где спрашивали:

Самокат Тех
Условие задачи

Необходимо получить перечень всех городов и количество пользователей, привязанных к каждому из них. Даже если в каком‑то городе нет ни одного пользователя, он всё равно должен присутствовать в результате с числом 0.

-- Таблица "towns"
create table towns (
    id    serial primary key,
    name  text not null
);

insert into towns (name)
values
    ('Москва'),
    ('Санкт-Петербург'),
    ('Краснодар');

-- Таблица "clients"
create table clients (
    id        serial primary key,
    name      text not null,
    town_id   int not null references towns(id)
);

insert into clients (name, town_id)
values
    ('Иван', 1),
    ('Анна', 1),
    ('Олег', 2);

-- Запрос
SELECT towns.name,
       COALESCE(COUNT(clients.name), 0) AS user_count
FROM clients
RIGHT JOIN towns
ON towns.id = clients.town_id
GROUP BY towns.name;