Sobes.tech
Middle

Je potrebné napísať dotaz, ktorý vráti umelcov a ich najskoršie albumy vo formáte <Meno umelca> <Názov prvého albumu> <Dátum vydania prvého albumu>. 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

Odpoveď od AI

Na získanie umelcov s ich najskoršími albumami môžete použiť dotaz s poddotazom, ktorý vyberá minimálny dátum vydania albumu pre každého umelca, a potom ho spojiť s tabuľkou albumov na získanie názvu albumu.

Príklad dotazu:

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;

Alternatívne môžete použiť CTE na výpočet minimálneho dátumu a následne ho spojiť s tabuľkou albumov:

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;

Táto otázka vráti meno umelca, názov jeho prvého albumu a dátum vydania prvého albumu.