Выбрать из БД топ 5 ФИО спортсменов, больше остальных посетивших соревнований

Рейтинг: -2Ответов: 1Опубликовано: 26.02.2023

Есть sql-скрипт для создания таблиц

drop table if exists Sportsman;
drop table if exists Competition;
drop table if exists Result;


create table Sportsman(
    id integer primary key autoincrement,
    name varchar(50),
    email varchar(50),
    phone_number integer(10),
    birth_date date;
    age integer(3),
    create_date datetime;
    passport int(10),
    middle_rate real(3),
    text(1000),
    vid varchar(256) #path to videofile
);

create table Competition(
    id integer primary key autoincrement,
    name varchar(50),
    sport_type varchar(50),
    date_ date
);

create table Result(
    id integer primary key autoincrement,
    sportsmanID integer,
    competitionID integer,
    foreign key (sportsmanID) references Sportsman(id),
    foreign key (competitionID) references Competition(id)
);

Задача состоит в том, чтобы выбрать из БД топ 5 ФИО спортсменов, больше остальных посетивших соревнований. Желательно, не использовать вложенные select запросы. Как мне написать SQL запрос реализующий это?

Ответы

▲ 0
SELECT s.name, COUNT(r.competitionID) as num_competitions
FROM Sportsman s
JOIN Result r ON s.id = r.sportsmanID
GROUP BY s.id
ORDER BY num_competitions DESC
LIMIT 5;