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

Вземете втора най-висока заплата за всеки човек в mysql

С помощта на агрегатна функция и самостоятелно присъединяване можете да направите нещо като

select a.*
from demo a
left join demo b on a.person_id = b.person_id
group by a.person_id,a.salary
having sum(a.salary < b.salary) = 1 /* 0 for highest 1 for second highest 2 for third and so on ... */

или използвайки пълен случай на израз в sum

having sum(case when a.salary < b.salary then 1 else 0 end)  = 1

Демо



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите всички данни от 2 таблици с помощта на външен ключ

  2. Ред на пълнотекстово търсене в MYSQL по уместност

  3. MySQL сървърът изчезна - точно за 60 секунди

  4. Достъп до MySQL база данни от моя VB.NET 2008 проект

  5. Географско търсене (разстояние) в PHP/MySQL (производителност)