Sobes.tech
Middle

Wymagane jest napisanie zapytania, które zwróci artystów i ich najwcześniejsze albumy w formacie <Nazwa artysty> <Nazwa pierwszego albumu> <Data wydania pierwszego 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

Odpowiedź od AI

Aby uzyskać artystów z ich najwcześniejszymi albumami, można użyć zapytania z podzapytaniem, które wybiera minimalną datę wydania albumu dla każdego artysty, a następnie połączyć je z tabelą albumów, aby uzyskać nazwę albumu.

Przykład zapytania:

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;

Alternatywnie, można użyć CTE do obliczenia minimalnej daty, a następnie połączyć z tabelą albumów:

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;

Ta zapytanie zwróci nazwę artysty, nazwę jego pierwszego albumu i datę wydania tego albumu.