sql >> Database >  >> RDS >> Mysql

Krijg het op één na hoogste salaris voor elke persoon in mysql

Door de aggregatiefunctie en zelf-deelname te gebruiken, zou je iets kunnen doen als

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 ... */

of het gebruik van volledige hoofdlettergebruik in sum

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

Demo



  1. Controleer of een tabel wordt verwezen door een externe sleutel in SQL Server met OBJECTPROPERTY()

  2. MySQL/InnoDB en langlopende queries

  3. DNA vs moderne back-up methoden:De toekomst van data-opslag

  4. Hoe Raw SQL uit te voeren in SQLAlchemy