Назад к вопросам
OZON
Middle
6
Требуется написать запрос, возвращающий артистов и самые ранние их альбомы в формате <Имя артиста> <Название первого альбома> <Дата выпуска первого альбома>. create table Artists ( id serial primary key, name varchar(255) not null ); create table Albums ( id serial primary key, artistId int not null references Artists(id), name varchar(255) not null, release_date timestamp not null ); insert into Artists(name) values ('2Pac'), ('Wu-Tang Clan'), ('Eminem'); insert into Albums(name, artist_id, release_date) values ('The Slim Shady LP', 3, '[phone]'), ('Me Against The World', 1, '[phone]'), ('The Eminem Show', 3, '[phone]'), ('Enter The Wu-Tang Clan', 2, '[phone]'), ('Recovery', 3, '[phone]'), ('The W', 2, '[phone]'), ('2Pacalypse Now', 1, '[phone]'); select a.name, al.name, al.release_date from Artists as a join Albums as al on a.Id = al.artistId where al.release_date = ( select min(release_date) from Albums where artist_id = a.id ); with cte as ( select artist_id, min(release_date) as first_album_date from albums group by artist_id ) select a.Id, a.Name, fa.first_album_date from Artists a join cte as fa on a.Id = fa.artist_id;
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для получения артистов с их самыми ранними альбомами можно использовать запрос с подзапросом, который выбирает минимальную дату выпуска альбома для каждого артиста, и затем соединить с таблицей альбомов для получения названия альбома.
Пример запроса:
select
a.name as artist_name,
al.name as first_album_name,
al.release_date as first_album_date
from Artists a
join Albums al on a.id = al.artistId
where al.release_date = (
select min(release_date)
from Albums
where artistId = a.id
)
order by a.name;
Альтернативно, можно использовать CTE для вычисления минимальной даты и затем соединить с таблицей альбомов:
with first_albums as (
select artistId, min(release_date) as first_album_date
from Albums
group by artistId
)
select
a.name as artist_name,
al.name as first_album_name,
al.release_date as first_album_date
from Artists a
join first_albums fa on a.id = fa.artistId
join Albums al on al.artistId = fa.artistId and al.release_date = fa.first_album_date
order by a.name;
Этот запрос вернёт имя артиста, название его первого альбома и дату выпуска первого альбома.