Mysql8.0窗口函数,统计报表so easy

Mysql8.0支持窗口函数


习惯使用orale的程序猿们,mysql8.0支持窗口函数,使用mysql统计各种报表数据将不再麻烦。还未升级mysql的同学们,也可以升级尝试一下。

  • number() , rank() , dense_rank()
CREATE TABLE numbers (
    val INT
);

INSERT INTO numbers(val)
VALUES(1),(2),(2),(3),(4),(4),(5);

SELECT
	val,
	ROW_NUMBER() OVER w AS 'row_number',
	RANK() OVER w AS 'rank',
	DENSE_RANK() OVER w AS 'dense_rank' 
FROM
	numbers WINDOW w AS ( ORDER BY val );

在这里插入图片描述

  • lag() , lead()
create table series(
  date int,
	val  int
);

insert into series values
(202001,10000),(202002,12000),(202003,11000),
(202004,9800),(202005,15000),(202006,13000);

SELECT
	date,
	val,
	LAG( val ) OVER w AS 'lag',
	LEAD( val ) OVER w AS 'lead',
	val - LAG( val ) OVER w AS 'lag diff',
	val - LEAD( val ) OVER w AS 'lead diff' 
FROM
	series WINDOW w AS ( ORDER BY date );

在这里插入图片描述
详细示例请查看官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值