窗口函数示例1-count:

有关开窗函数的基本语法参照 参考地址

1.COUNT

包括类似的SUM、AVG、MIN、MAX,都是用于实现分组内的统计

需求案例:一个目的地,用户可能通过三种路径到达,一天可以到达多次,统计出只通过A路径到达目标的人数、次数

image.png
用户 路径 目标
uid1 A Target1
uid1 B Target1
uid2 A Target1
uid2 A Target2
uid3 A Target2
uid3 B Target2
uid3 A Target2
--建表
create table log (uid string,path string,target string);
insert into log values('uid1','A','Target1');
insert into log values('uid1','B','Target1');
insert into log values('uid2','A','Target1');
insert into log values('uid2','A','Target2');
insert into log values('uid3','A','Target2');
insert into log values('uid3','B','Target2');
insert into log values('uid3','A','Target2');


--统计单用户的目标到达次数
with push as (
select uid,path,target,count(*) as v1
from log
group by uid,path,target
),

--使用窗口函数统计单个目标到达的路径个数
stat as (
  select uid,path,target,v1,count(path) over(partition by uid,target) as v2
  from  push
) 

--筛选+汇总
select count(distinct uid),sum(v1) 
from  stat
where v2 = 1 and path= 'A'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 按照用途分类出以下统计函数: AVEDEV 用途:返回一组数据与其平均值的绝对偏差的平均值,该函数可以评测数据(例...
    四方院祭司阅读 8,009评论 0 3
  • 一. Java基础部分.................................................
    wy_sure阅读 9,228评论 0 11
  • 分析函数,也称为窗口函数,通常被认为仅对数据仓库SQL有用。使用分析函数的查询,基于对数据行的分组来计算总量值。与...
    猫猫_tomluo阅读 8,636评论 3 18
  • 谁一辈子没干过几件龌蹉事, 既然彼此彼此, 那就放过彼此。 我们总是看到对方的缺点,却忘记了,自己其实也有着这样、...
    凌念念阅读 4,741评论 0 0
  • 巴渝墨客 2018-09-14 前言: 我们今天来说一说“为何现在的人大多都对婚姻有一种恐惧?” 时代不同了只是...
    巴渝墨客阅读 3,984评论 1 1