Sobes.tech
Middle

Es ist erforderlich, eine Abfrage zu schreiben, die die Künstler und ihre frühesten Alben im Format <Künstlername> <Name des ersten Albums> <Veröffentlichungsdatum des ersten Albums> zurückgibt. 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 KI

Antwort von AI

Um Künstler mit ihren frühesten Alben zu erhalten, kann man eine Abfrage mit einer Unterabfrage verwenden, die das minimale Veröffentlichungsdatum des Albums für jeden Künstler auswählt, und dann mit der Album-Tabelle verbindet, um den Namen des Albums zu erhalten.

Beispielabfrage:

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;

Alternativ kann man CTE verwenden, um das minimale Datum zu berechnen, und dann mit der Album-Tabelle verbinden:

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;

Diese Abfrage gibt den Namen des Künstlers, den Namen seines ersten Albums und das Veröffentlichungsdatum des ersten Albums zurück.