de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
Karan Gandhi
Karan Gandhi
Question

Jak znaleźć trzecią lub n-tą maksymalną pensję z tabeli wynagrodzeń?

Jak znaleźć trzecią lub n-tą maksymalną pensję z salary table(EmpID,EmpName,EmpSalary) w zoptymalizowany sposób?

94 2013-04-26T11:07:55+00:00 3
 resueman
resueman
Edytowane pytanie 11. września 2015 в 8:21
Programowanie
sql
sql-server
sql-server-2008
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Tim Schmelter
Tim Schmelter
26. kwietnia 2013 в 11:11
2013-04-26T11:11:22+00:00
Więcej
Źródło
Edytuj
#19206236

Użyj ROW_NUMBER (jeśli chcesz pojedynczy) lub DENSE_RANK (dla wszystkich powiązanych wierszy):

WITH CTE AS
(
    SELECT EmpID, EmpName, EmpSalary,
           RN = ROW_NUMBER() OVER (ORDER BY EmpSalary DESC)
    FROM dbo.Salary
)
SELECT EmpID, EmpName, EmpSalary
FROM CTE
WHERE RN = @NthRow
Tim Schmelter
Tim Schmelter
Edytowana odpowiedź 27. września 2017 в 7:32
76
0
 Codesen
Codesen
26. kwietnia 2013 в 11:11
2013-04-26T11:11:27+00:00
Więcej
Źródło
Edytuj
#19206237

Spróbuj tego

SELECT TOP 1 salary FROM (
   SELECT TOP 3 salary 
   FROM employees 
   ORDER BY salary DESC) AS emp 
ORDER BY salary ASC

Dla 3 możesz zastąpić dowolną wartość...

 Magnus
Magnus
Edytowana odpowiedź 26. kwietnia 2013 в 11:14
60
0
 Luv
Luv
26. kwietnia 2013 в 11:12
2013-04-26T11:12:02+00:00
Więcej
Źródło
Edytuj
#19206238

Zastąpić N swoim numerem maksymalnym.

SELECT *
FROM Employee Emp1
WHERE (N-1) = (
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)

Objaśnienie

Powyższe zapytanie może być dość mylące, jeśli nie widziałeś wcześniej czegoś takiego - zapytanie wewnętrzne jest tak zwanym podzapytaniem skorelowanym, ponieważ zapytanie wewnętrzne (podzapytanie) używa wartości z zapytania zewnętrznego (w tym przypadku tabeli Emp1) w klauzuli WHERE.

I Źródło

12
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Jasur Fozilov
Zarejestrowany 10 godzin temu
2
Zuxriddin Muydinov
Zarejestrowany 1 dzień temu
3
Денис Анненский
Zarejestrowany 3 dni temu
4
365
Zarejestrowany 1 tydzień temu
5
True Image
Zarejestrowany 1 tydzień temu
DA
DE
EL
ES
FR
ID
IT
JA
KO
NL
PL
PT
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem