中位数,奇数有1个,偶数有俩
正序倒序排序后,取排名之差=0 or 1的行即可得到中位数
在不用窗口函数的情况下,只能使用临时变量了
SELECT id,T.company company,salary FROM
(SELECT E.*,
if(@p=e.company,@rank:=@rank+1,@rank:=1) rk,@p:=company
FROM Employee E,(SELECT @rank:=1,@p:=NULL) tmp
ORDER BY company,salary
) T
LEFT JOIN
(SELECT company,count(id)/2 as m
FROM Employee GROUP BY company
) TT
ON T.company = TT.company
WHERE rk-m in (0,0.5,1)