Mysql
 sql >> база данни >  >> RDS >> Mysql

Намерете най-добрите възможни начини за 2-ра най-висока заплата

Този въпрос най-често задават по време на интервюто от кандидатите, които са по-нови или с 1 година опит. Дори този въпрос беше зададен от мен може би пъти, когато бях в областта на уеб разработката.

Така че ще ви покажа някои възможни начини да намерите 2-ра или n-та най-висока заплата.


За опит:таблица на служителите (ET)

EID Име на служител Заплата
1 Служител-1 20 000
2 Служител-2 22 000
3 Служител-3 21 000
4 Служител-4 19 000
5 Служител-5 21 000

1:- Как да намерите n-та най-висока заплата без условие
В този случай можете да използвате много основни лимит и максимални методи на sql

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

Където n е позицията, която търсите
Ако n=2 заявката ще стане

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

Изходът ще бъде:21 000

2:- Как да намерите всички n-та най-висока заплата, където условието е, че трябва да намерите всички 2-ри най-високоплатени служители.
В този случай можете да използвате функцията за подзаявка на sql.

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

Където n е позицията, която търсите
Ако n=2 заявката ще стане

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

Изходът ще бъде:21 000 , 21 000

3:- Как да намерите 2-ра най-висока заплата, без да използвате LIMIT условия.
В този случай можете да използвате условия NOT IN в sql

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

Изходът ще бъде:21 000

4:- Как да намерите 2-ра най-висока заплата, без да използвате LIMIT и подзаявка
В този случай можете да използвате метода за самостоятелно присъединяване

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

Надяваме се, че това ще ви помогне да намерите правилния отговор според вашите нужди.. 🙂

Ако ви харесва тази публикация, моля, не забравяйте да се абонирате за My Public Notebook за още полезни неща.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи функцията INSTR() в MySQL

  2. Как да нулирате паролата на MySQL root

  3. CURRENT_TIMESTAMP Примери – MySQL

  4. Ръководство за проектиране на база данни за тест в MySQL

  5. Приставката за удостоверяване „caching_sha2_password“ не може да бъде заредена