Итак, у меня есть таблица под названием «атлеты», в которой есть пять полей: спортсмены, спорт, золото, серебро, бронза. Из этой таблицы мы создаем вид, называемый most_played_sports, который содержит все виды спорта, в которых более 500 спортсменов. Задача состоит в том, чтобы найти различные пары спортивных состязаний (sport_1, sport_2), используя вышеприведенное представление, так что количество медалей для sport_1 строго меньше, чем sport_2.запрос SQLite висит
Запрос Я попытался это:
create view if not exists most_played_sports as select sport, sum(gold)+sum(silver)+sum(bronze) as medal_count from athletes
group by sport
having count(id) >= 500;
select distinct athletes.sport as sport_1, most_played_sports.sport as sport_2
from athletes cross join most_played_sports
where sport_1 > sport_2 and
((select medal_count from most_played_sports where sport=sport_1) < (select medal_count from most_played_sports where sport=sport_2));
Второй запрос возвращает некоторые результаты, но висит. Есть ли лучший способ сделать эту задачу, чем я, что я пробовал?