Тут все просто, если мы хотим добавить значение в качестве еще одного столбца, то для расчета этого столбца мы можем использовать подзапрос.
В этом случае подзапрос должен всегда возвращать 1 значение
with cte as (
select
club,
avg(overall) as avg_overall
from
fifa_players_2018
group by
club
order by
avg_overall desc
limit 1
)
select
club,
short_name,
overall,
(select avg_overall from cte ) as avg_overall
from
fifa_players_2018 as players
where club = (select club from cte)
order by
overall desc
limit 5
Запомните, подзапрос в SELECT
мы используем в том случае, когда нам нужно добавить какое-то значение для всей колонки. Но вообще использование подзапросов в SELECT
очень редкая практика, ведь чаще такую задачу закрывает просто использование JOIN
.
Если мы попробуем решить эту задачу через JOIN
, то получится вот так:
with cte as (
select
club,
avg(overall) as avg_overall
from
fifa_players_2018
group by
club
order by
avg_overall desc
limit 1
)
select
players.club,
short_name,
overall,
avg_overall
from
fifa_players_2018 as players
join cte on cte.club = players.club
order by
overall desc
limit 5
Еще подзапрос в SELECT
мы можем использовать в конструкции CASE WHEN
, но подробно об этом говорить не будем, потому что тут работают те же правила, что и для WHERE
.