sql >> Databasteknik >  >> RDS >> Mysql

Få näst högsta lön för varje person i mysql

Genom att använda aggregatfunktion och self join kan du göra något 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 genom att använda kompletta kasusuttryck i sum

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

Demo



  1. #1273 - Okänd sammanställning:'utf8mb4_unicode_ci' cPanel

  2. Få de underliggande kolumnerna i en vy baserat på dess resultatuppsättning

  3. ORA-03113:slutet av filen på kommunikationskanalen

  4. många-till-många-relation mellan två enheter i spring boot