MySQL--聚合函数做窗口函数使用

引言
常见的聚合窗口函数
  • 我们常见的聚合函数有时也可以作为窗口函数使用。
数据库准备
  • 数据库表格信息

CREATE TABLE `trade_goods` (
  `worker_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '1',
  `goods_id` varchar(100) DEFAULT NULL,
  `trade_type` varchar(100) DEFAULT NULL,
  `total` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `zmx`.`trade_goods`(`worker_id`, `goods_id`, `trade_type`, `total`) VALUES ('1', '1', 'A', 2);
INSERT INTO `zmx`.`trade_goods`(`worker_id`, `goods_id`, `trade_type`, `total`) VALUES ('1', '2', 'A', 3);
INSERT INTO `zmx`.`trade_goods`(`worker_id`, `goods_id`, `trade_type`, `total`) VALUES ('1', '1', 'B', 4);
INSERT INTO `zmx`.`trade_goods`(`worker_id`, `goods_id`, `trade_type`, `total`) VALUES ('1', '2', 'B', 3);
INSERT INTO `zmx`.`trade_goods`(`worker_id`, `goods_id`, `trade_type`, `total`) VALUES ('2', '1', 'A', 1);
INSERT INTO `zmx`.`trade_goods`(`worker_id`, `goods_id`, `trade_type`, `total`) VALUES ('2', '2', 'A', 3);
INSERT INTO `zmx`.`trade_goods`(`worker_id`, `goods_id`, `trade_type`, `total`) VALUES ('2', '2', 'B', 5);
INSERT INTO `zmx`.`trade_goods`(`worker_id`, `goods_id`, `trade_type`, `total`) VALUES ('2', '1', 'B', 2);

在这里插入图片描述

  • 表名 :trade_goods 交易商品表
  • 字段:
    worker_id: 员工id
    goods_id:商品id
    trade_type:交易类型
    total:交易量
聚合窗口函数使用
select *, 
	sum(total) over(PARTITION by worker_id rows unbounded preceding )"当前累计total" ,
	avg(total) over(PARTITION by worker_id rows unbounded preceding )"当前平均total" ,
	min(total) over(PARTITION by worker_id rows unbounded preceding )"当前最小total" ,
	max(total) over(PARTITION by worker_id rows unbounded preceding )"当前最大total" ,
	count(total) over(PARTITION by worker_id rows unbounded preceding )"当前行数" 
from trade_goods;

在这里插入图片描述

  • 以上的sql语句,以worker_id为分区条件,rows unbounded preceding 表示窗口大小为当前分区第一行到当前行,
  • 采用sum()聚合窗口函数,累计计算从分区第一行到当前行的total总量。
  • 采用avg()聚合窗口函数,累计计算从分区第一行到当前行的total平均数。
  • 采用max()聚合窗口函数,累计计算从分区第一行到当前行的最大的total数。
  • 采用min()聚合窗口函数,累计计算从分区第一行到当前行的最小的total量。
  • 采用count()聚合窗口函数,累计计算从分区第一行到当前行的行数。
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻馅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值