在常常会用到累计数据的分析,例如:历史累计量,按年累计量,按月计算累计量,按周计算累计量。
下面是一个通过分析函数来实现的累计数据分析:
历史累计: 是最容易的,直接用一个分析函数:
语法:sum(XX) over (partition by country order by date) 这个函数的意思是指: 对XX这个指标在country的分组,并且在date的顺序进行做累计数据计算
例如:
select t.date_id, t.country_id, t.platform_id,t.newuser, sum(t.newuser) over(partition by t.country_id, t.platform_id order by t.date_id) as totaluser_history from BROWSER_USE_OS_F t where t.date_id>=20130101 and t.country_id=2 and t.platform_id=4
row date_id country_id platform newuser totaluser_history
1 20130101 2 4 13262 13262
2 20130102 2 4 15553 28815
3 20130103 2 4 16418 45233
4 20130104 2 4 16524 61757
5 20130105 2 4 17093 78850
6 20130106 2 4 16316 95166
7 20130107 2 4 15965 111131
8 20130108 2 4 16496 127627
9 20130109 2 4 17185 144812
10 20130110 2 4 16770 161582
按年累计: 这种可以演化推广到周累计,月累计,季累计等等。
语法:
sum(t.newuser) over(partition by t.country_id, t.platform_id order by t.date_id rows between to_date(date_id,'yyyy-mm-dd')-to_date(substr(date_id,0,4)||'0101','yyyy-mm-dd') preceding and current row) as totaluseryesr
这个语句看起来复杂,其实可以其实也简单,就是在原来的基础上添加了 rows between 1 preceding and current row 这种样式的内容,添加了窗口,并且这个窗口的数据区间是跟据时间来变化的。
to_date(date_id,'yyyy-mm-dd')-to_date(substr(date_id,0,4)||'0101','yyyy-mm-dd')
这一行的意思是,计算当前年到当前数据一共有多少行,通过行数来计算。
row between XX preceding and XX following 样式的类容详细总结如下:
range between unbounded preceding and current row 指定计算当前行开始、当前行之前的所有值;
rows between 1 preceding and current row 指定计算当前行的前一行开始,其范围一直延续到当前行;
range between current row and unbounded following 指定计算从当前行开始,包括它后面的所有行;
rows between current row and 1 following 指定计算当前行和它后面的一行;
分享到:
相关推荐
在PB脚本中,Setfilter()函数用于筛选数据,在写法上与SQL语言不同。例如,将日期改成固定格式用:string(字段名,’yyyy-mm-dd’),可以与datetime型的数据做大小对比。 二、datetime型的数据转化成六位数据 在PB...
1. **子查询和联接操作**:高级的SQL写法可能会利用子查询和多表联接来处理复杂的数据关系,比如在单个查询中同时处理多个表的数据,或者通过嵌套查询来获取特定条件下的子集。 2. **窗口函数**:MySQL 8.0引入了...
总结起来,DB2中的SQL写法涵盖了基础的数据库操作,如数据类型定义、日期时间处理、变量赋值、游标操作,以及数据表的创建和管理。这些知识对于DB2的初学者来说是必不可少的,理解和掌握它们将有助于进行有效的...
sql学习 集合写法.sql
"使用 SQL Server 数据库中查询累计值的方法" SQL Server 是一个功能强大且广泛使用的关系数据库管理系统,通过它可以对数据进行高效的存储、管理和查询。在实际应用中,我们经常需要对数据进行累计计算,例如银行...
mysql只取年月日的SQL写法
根据提供的文件信息,本文将详细解释如何使用SQL语句实现数据的时间递增累加功能。在实际业务场景中,这种需求非常常见,特别是在财务、库存管理或者数据分析等领域,需要跟踪随时间变化的数据趋势。 ### 一、理解...
本文将为大家介绍如何使用SQL Server数据库查询累计值。
#### 四、案例分析:SqlServer触发器写法案例 下面通过一个具体的例子来详细了解如何编写一个触发器。 ##### 案例背景 假设我们有一个名为`OrderBook`的表,其中包含订单信息,以及一个名为`Categories`的表,...
在本资源中,我们有一个名为"MySQL官网测试数据上百万条数据sql文件"的压缩包,它包含了一个或多个SQL脚本,这些脚本设计用于在MySQL数据库中创建并填充大量的测试数据。 SQL(Structured Query Language)是用于...
sql学习 执行计划SQL写法差异改变之1_with子句.sql
sql学习 执行计划SQL写法差异改变之3_rownum分页.sql
sql学习 执行计划SQL写法差异改变之2_insert all.sql
sql学习 执行计划SQL写法差异改变之6_缓存结果影响.sql
sql学习 执行计划SQL写法差异改变之4_rownum实体化.sql
sql学习 执行计划SQL写法差异改变之5_rowid 的影响.sql
在“labview写入数据到sql server2005”的场景中,LabVIEW被用来作为数据处理和控制工具,与SQL Server 2005数据库进行交互,实现数据的写入操作。SQL Server 2005是微软公司的关系型数据库管理系统,它提供了数据...
SQL销售明细大佬写法.sqlSQL销售明细大佬写法.sql SQL销售明细大佬写法.sqlSQL销售明细大佬写法.sql SQL销售明细大佬写法.sql
《全球行政区域数据——SQL文件解析与应用》 在信息化高度发展的今天,数据的重要性不言而喻,尤其在地理信息系统(GIS)和数据分析领域。本文将深入探讨标题为“世界行政区域,全国省市区镇 数据 sql文件”的资源...
近日,一份名为“最新淘宝商品类目数据.sql”的文件引起业界广泛关注,该文件包含淘宝平台最新商品分类信息,为电商从业者提供了一个高效便捷的数据获取渠道。 淘宝商品类目是电商业务的核心组成部分,它将各类商品...