案例:员工薪水中位数
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020081617343033.png#pic_center)
查询结果:
Id | Company | Salary |
---|
5 | A | 451 |
6 | A | 513 |
12 | B | 234 |
9 | B | 1154 |
14 | C | 2645 |
SELECT
b.id,
b.company,
b.salary,
b.rk
FROM
(SELECT
id,
company,
salary,
@com,
CASE
@com
WHEN company
THEN @rk := @rk + 1
ELSE @rk := 1
END rk,
@com := company
FROM
employee,
(SELECT
@rk := 0,
@com := '') a
ORDER BY company,
salary) b
LEFT JOIN
(SELECT
company,
COUNT(1) / 2 cnt
FROM
employee
GROUP BY company) c
ON c.company = b.company
WHERE
b.rk IN (c.cnt + 0.5, c.cnt, c.cnt + 1)
employee表的数据
Create table If Not Exists Employee (Id int, Company varchar(255), Salary int);
insert into Employee (Id, Company, Salary) values (1, 'A', 2341);
insert into Employee (Id, Company, Salary) values (2, 'A', 341);
insert into Employee (Id, Company, Salary) values (3, 'A', 15);
insert into Employee (Id, Company, Salary) values (4, 'A', 15314);
insert into Employee (Id, Company, Salary) values (5, 'A', 451);
insert into Employee (Id, Company, Salary) values (6, 'A', 513);
insert into Employee (Id, Company, Salary) values (7, 'B', 15);
insert into Employee (Id, Company, Salary) values (8, 'B', 13);
insert into Employee (Id, Company, Salary) values (9, 'B', 1154);
insert into Employee (Id, Company, Salary) values (10, 'B', 1345);
insert into Employee (Id, Company, Salary) values (11, 'B', 1221);
insert into Employee (Id, Company, Salary) values (12, 'B', 234);
insert into Employee (Id, Company, Salary) values (13, 'C', 2345);
insert into Employee (Id, Company, Salary) values (14, 'C', 2645);
insert into Employee (Id, Company, Salary) values (15, 'C', 2645);
insert into Employee (Id, Company, Salary) values (16, 'C', 2652);
insert into Employee (Id, Company, Salary) values (17, 'C', 65);