[SQL] Jak wybrać drugą największą wartość z kolumny?

Zakładamy że mamy taką oto tabelę:

Osoby
——-
idOsoby
Imie
Wiek
Nazwisko

oraz takie dane:

IdOsobyImieWiekNazwisko
1Mateusz21Mazurek
2Michał36Dorycki
3Kamil37Dudło
4Sebastian19Tabelowski
5Łukasz12Wlazło
6Maciej36Prędki

 

Chciałbym wybrać z tej tabeli wiek osoby która jest młodsza od najstaszej osoby ale starsza od pozostałych osób.

Czyli druga wartość jeśli byśmy sortowali malejąco po wieku.

Skorzystamy z podzapytań (subqueries). Zapytanie wewnętrzne zwracać będzie 2 pierwsze rekordy z tych posortowanych malejąco, czyli od największego do najmniejszego. A z tego wyniku wybierzemy najmniejszą wartość.

Czyli z podzapytania weźmiemy:

IdOsobyImieWiekNazwisko
3Kamil37Dudło
2Michał36Dorycki

A następnie z tego weźmiemy najmniejszą wartość wieku. Co będzie równoznaczne z 2 co do kolejności malejącej wartość wieku z całej tabeli :)

Zapytanie:

1
2
3
SELECT MIN(Wiek) AS secondvalue
FROM
(SELECT TOP(2) * FROM dbo.Osoby ORDER BY Osoby.Wiek DESC) AS r
Dzięki za wizytę,
Mateusz Mazurek
Podziel się na:
    Facebook email PDF Wykop Twitter

Dodaj komentarz

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subskrybuj  
Powiadom o