MySQL从版本8.0开始,支持窗口函数。窗口函数允许您以新的,更简单的方式解决查询问题,并具有更好的性能。
假设我们有一个sales表,按员工和财政年度存储销售额,如下所示:
CREATE TABLE sales(
sales_employee VARCHAR(50) NOT NULL,
fiscal_year INT NOT NULL,
sale DECIMAL(14,2) NOT NULL,
PRIMARY KEY(sales_employee,fiscal_year)
);
INSERT INTO sales(sales_employee,fiscal_year,sale)
VALUES('Bob',2016,100),
('Bob',2017,150),
('Bob',2018,200),
('Alice',2016,150),
('Alice',2017,100),
('Alice',2018,200),
('John',2016,200),
('John',2017,150),
('John',2018,250);
SELECT
*
FROM
sales;
理解窗口函数可能更容易从聚合函数开始。
聚合函数将来自多行的数据汇总到单个结果行中。例如,以下SUM()函数返回记录年份中所有员工的总销售额:
SELECT
SUM(sale)