image.png
    image.png


    中位数,奇数有1个,偶数有俩
    正序倒序排序后,取排名之差=0 or 1的行即可得到中位数
    在不用窗口函数的情况下,只能使用临时变量了

    1. SELECT id,T.company company,salary FROM
    2. (SELECT E.*,
    3. if(@p=e.company,@rank:=@rank+1,@rank:=1) rk,@p:=company
    4. FROM Employee E,(SELECT @rank:=1,@p:=NULL) tmp
    5. ORDER BY company,salary
    6. ) T
    7. LEFT JOIN
    8. (SELECT company,count(id)/2 as m
    9. FROM Employee GROUP BY company
    10. ) TT
    11. ON T.company = TT.company
    12. WHERE rk-m in (0,0.5,1)