sql >> Database teknologi >  >> RDS >> Mysql

Find 2. højeste løn bedst mulige måder

Dette spørgsmål stilles for det meste på tidspunktet for samtalen fra de kandidater, der er friskere eller 1 års erfaring. Selv dette spørgsmål stillet fra mig kan nogle gange, da jeg kom i webudviklingsområdet.

Så jeg vil vise dig nogle mulige måder at finde 2. eller n. højeste løn.


For Exp:Employee Table(ET)

EID Medarbejdernavn Løn
1 Medarbejder-1 20.000
2 Medarbejder-2 22.000
3 Medarbejder-3 21.000
4 Medarbejder-4 19.000
5 Medarbejder-5 21.000

1:- Sådan finder du nth højeste løn ingen betingelse
I dette tilfælde kan du bruge meget grundlæggende limit og max metoder for sql

SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1

Hvor n er den stilling, du leder efter
Hvis n=2 vil forespørgsel blive

SELECT DISTINCT(state_id) FROM crm_cities ORDER BY state_id DESC LIMIT 1,1

Output vil være:21.000

2:- Sådan finder du alle n. højeste løn, hvor betingelsen er, at du skal finde alle 2. bedst betalte medarbejdere.
I dette tilfælde kan du bruge sub-query-funktionen i sql.

SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1)

Hvor n er den stilling, du leder efter
Hvis n=2 vil forespørgsel blive

SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT 1,1)

Output vil være:21.000 , 21.000

3:- Sådan finder du 2. højeste løn uden at bruge LIMIT-betingelser.
I dette tilfælde kan du bruge NOT IN-betingelser i sql

SELECT MAX(Salary) FROM ET
WHERE Salary NOT IN (SELECT MAX(Salary) FROM ET)

Output vil være:21.000

4:- Sådan finder du den 2. højeste løn uden at bruge LIMIT og Sub-Query
I dette tilfælde kan du bruge selvtilmeldingsmetoden

SELECT MAX( E1.Salary ) FROM ET E1, ET E2 WHERE E1.Salary < E2.Salary
Output will be: 21,000

Håber dette vil hjælpe dig med at finde det rigtige svar efter dit behov.. 🙂

Hvis du kan lide dette indlæg, så glem ikke at abonnere på Min offentlige notesbog for flere nyttige ting.


  1. SQL Server - sammenføj rækker til en kommasepareret liste

  2. Slå advarsler og fejl fra på PHP og MySQL

  3. MySQL Indsæt fra en database i en anden

  4. Ulovlig blanding af sammenstillinger (utf8_unicode_ci,IMPLICIT) og (utf8_general_ci,IMPLICIT) for operation '='