Alias w podzapytaniu

0

Witam,
Mam takie zadania do wykonania:

a. Wyświetl wszystkie dane na temat klienta, który wypożyczył samochód na najdłuższy okres czasu oraz termin, na jaki samochód został wypożyczony.
b. Wyświetl imiona, nazwiska, numery dowodów klientów oraz daty wypożyczeń i zwrotów przez nich samochodów, dla klientów, którzy wypożyczyli i oddali samochody w okresie, pomiędzy wypożyczeniem przez klienta LIPKA JAKUB pierwszego samochodu a oddaniem przez niego ostatniego z wypożyczanych samochodów. Dane klienta LIPKA JAKUB mają nie być wyświetlone.

Tabele ( od góry: klienci, wypozyczenia ):
https://zapodaj.net/images/8ec367a2e6061.jpg

Zapytanie a:

select * from klienci where id_kli in
  ( select id_kli from wypozyczenia where data_zwr - data_wyp = 
    ( select max( data_zwr - data_wyp ) from wypozyczenia ) );

Nie wiem jak wstawić alias do nazwania terminu, czyli różnicy pomiędzy data_wyp i data_zwr - w ogóle nie dam rady tej wartości wyświetlić.

Zapytanie b:
Na tą chwilę mam pytanie: czy trzeba tu stosować joiny czy wystarczą same podzapytania + czy mogę zastosować podzapytanie np. w tym momencie ->

select k.nazwisko, k.imie, k.nr_dowodu, w.data_wyp, w.data_zwr from klienci k natural join wypozyczenia w where id_kli in
  ( select id_kli from wypozyczenia where data_wyp between  

czyli po between... ?

1

Drugie coś w ten deseń:

SELECT ... FROM klienci k NATURAL JOIN wypozyczenia w JOIN (SELECT Min(data_wyp) data_wyp, Max(data_zwr) data_zwr FROM wypozyczenia WHERE id_klienta='JAKUB LIPKA') x ON w.data_wyp>x.data_wyp AND w.data_zwr<x.data_zwr WHERE k.id_klienta<>'JAKUB LIPKA
0

@Marcin.Miga dał odpowiedź na b, to ja podpowiem na A:

coś w ten deseń:

SELECT 
     k.* 
     ,W.data_zwr
     ,W.data_wyp
     ,W.data_zwr - W.data_wyp AS DNI_WYPOZYCZENIA
FROM 
    klienci K
    inner join (SELECT 
                     ROW_NUMBER() OVER (ORDER BY  data_zwr - data_wyp DESC) RN
                     ,*
               FROM 
                    wypozyczenia) W
               ON K.ID_KLI = W.ID_KLI AND W.RN=1

p.s. Jestem w szoku, że Oracle nie ma TOP...

1 użytkowników online, w tym zalogowanych: 0, gości: 1