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

Få næsthøjeste løn for hver person i mysql

Ved at bruge aggregatfunktion og selvtilslutning kunne du gøre noget som

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

eller ved at bruge komplet kasusudtryk i sum

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

Demo



  1. Understøtter MySQL Regexp Unicode-matchning

  2. problem med at finde listen over filer i mappen

  3. Sådan rettes "Et korrelationsnavn skal angives for bulk-rækkesættet i fra-klausulen." i SQL Server

  4. egenskaben "diesel::Expression" er ikke implementeret for "bigdecimal::BigDecimal"