Задача C. Комбинации D&D

Автор:kroShot   Ограничение времени:1 сек
Входной файл:test.sql   Ограничение памяти:256 Мб
Выходной файл:test.log  

Условие

В базе данных хранится информация об игроках в Dungeons & Dragons и их персонажах.

Таблица players содержит информацию об игроках:


CREATE TABLE players (
    id          INTEGER NOT NULL PRIMARY KEY,
    nickname    VARCHAR(255) NOT NULL UNIQUE,
    age         INTEGER NOT NULL
);

Таблица characters содержит информацию о персонажах:


CREATE TABLE characters (
    id          INTEGER NOT NULL PRIMARY KEY,
    player_id   INTEGER NOT NULL,
    race        VARCHAR(255) NOT NULL,
    class       VARCHAR(255) NOT NULL,
    FOREIGN KEY (player_id) REFERENCES players(id)
);

Схема БД в UML-нотации:

Каждый игрок может иметь любое количество персонажей.

Нужно составить запрос, который для каждой из 3 самых популярных комбинаций выдаст:

Комбинация считается популярной по количеству уникальных игроков, которые создали хотя бы одного персонажа с такой комбинацией.

Результат отсортируйте по убыванию количества игроков, при равенстве - по названию расы, затем по названию класса.

Решение следует представить в виде текстового файла, содержащего единственный SQL-запрос.

Формат входного файла

Пример тестовой БД.

Формат выходного файла

Для тестовой базы корректный запрос вернёт:

Вердан|бард|4|33
Вердан|колдун|4|35
Кобольд|следопыт|4|47

Ограничения

Предполагается, что для работы с базой данных используется SQLite3.


0.041s 0.009s 19