Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erhalten Sie das zweithöchste Gehalt für jede Person in mysql

Durch die Verwendung von Aggregatfunktion und Selbstverknüpfung könnten Sie so etwas wie

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

oder mit vollständigem Fallausdruck in sum

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

Demo