数据库sum()over()函数

一、sum()over()函数

sum():对某个字段求和。
over():开窗,按照某种规则,将数据分组、分窗口计算。
sum()over():对某个字段有规则的求和。规则即over()中的分组、排序字段,按照分组字段将数据分为不同的组,按照排序字段对求和字段组内逐级累计计算
用法:sum(求和字段)over(PARTITION by 分组字段1,分组字段2。。。 order by 排序字段1。。。)
示例:sum(交易额)over(PARTITION by 城市,年份order by 月份)
示例说明:对交易额求和,此时求和非全表求和,而是将数据按照城市和年份分到不同组,且按照月份正序累计交易额。
如凉州2023年1、2、3月交易额都为100,那么2月累计为1月+2月是200,3月累计为1月+2月+3月是300.

city yearid monthid money_num sum_over
凉州 2023 01 100 100
凉州 2023 02 100 200
凉州 2023 03 100 300

二、示例

2.1准备工作

--创建测试表
create table test_sumover(
    city string COMMENT '城市',
    yearid string COMMENT  '年',
    MONTHid string COMMENT '月',
    money_num DECIMAL (18,2) COMMENT '交易额'
)
;
--写入测试数据
INSERT into test_sumover
VALUES 
 ('凉州','2023','01',100)
,('凉州','2023','02',100)
,('凉州','2023','03',100)
,('荆州','2023','01',100)
,('荆州','2023','02',100)
,('荆州','2023','03',100)
,('徐州','2023','01',100)
,('徐州','2023','02',100)
,('徐州','2023','03',100)
;

2.2测试结果:
对测试数据按照城市、年份分为不同的组,再根据月份正序逐月累计交易额。

--测试SQL
SELECT 
city
,yearid
,monthid
,sum(money_num )over(PARTITION by city,yearid order by monthid) sum_over
from test_sumover
;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值