当前位置: 首页 > news >正文

宿州城市建设投资网站seo个人优化方案案例

宿州城市建设投资网站,seo个人优化方案案例,俄文网站开发翻译,成都网站建设定文章目录1 统计连续N次登录的用户(N>2)自连接过滤实现窗口函数lead()实现2 级联累加求和自连接窗口函数sum()实现3 分组TopN问题对窗口函数的讲解part见:【大数据Hive3.x数仓开发】函数–窗口函数 1 统计连续N次登录的用户(N&…

文章目录

    • 1 统计连续N次登录的用户(N>=2)
      • 自连接过滤实现
      • 窗口函数lead()实现
    • 2 级联累加求和
      • 自连接
      • 窗口函数sum()实现
    • 3 分组TopN问题

对窗口函数的讲解part见:【大数据Hive3.x数仓开发】函数–窗口函数

1 统计连续N次登录的用户(N>=2)

在这里插入图片描述

自连接过滤实现

连续两天登陆的用户ID:

select distinct a_userid
from tb_login_tmp
where a.user_id = b.user_id
and cast(substr(a_logintime,9,2) as int) -1 = cast(substr(b_logintime,9,2)as int);

窗口函数lead()实现

功能:用于从当前数据中基于当前行的数据向后偏移取值
语法:lead(colName,N,defautValue)

colName:取哪一列的值
N:向后偏移N行
defaultValue:如果取不到返回的默认值

分析:
我们可以基于用户的登陆信息,找到如下规律:
连续两天登陆:用户下次登陆时间 =本次登陆以后的第二天
连续三天登陆:用户下下次登陆时间=本次登陆以后的第三天
我们可以对用户ID进行分区,按照登陆时间进行排序,通过lead函数计算出用户下次登陆时间
通过日期函数计算出登陆以后第二天的日期,如果相等即为连续两天登录。

selectuserid,logintime--本次登陆日期的第二天,date_add(logintime,1) as nextday--按照用户id分区,按照登录日期排序,取下一次登录时间,取不到就为0,lead(logintime,1,0) over (partition by userid order by logintime) as nextlogin
from tb_login;

在这里插入图片描述

selectuiserid,logintime--本次登陆日期的第三天,date_add(login_time,2) as nextday--按照用户id分区,按照登陆日期排序,取下下一次登录时间,取不到为0,lead(logintime,2,0)over (partition by userid order by logintime) as nextlogin
from tb_login;
selectuserid,logintime,date_add(login_time,N-1) as nextday--按照用户id分区,按照登陆日期排序,取下下一次登录时间,取不到为0,lead(logintime,N-1,0)over (partition by userid order by logintime) as nextlogin
from tb_login;

2 级联累加求和

在这里插入图片描述

自连接

方案一:分组统计每个用户每个月的消费金额,然后构建自连接,根据条件分组聚合;

selecta.*,b.*
from tb_money_mth a join tb_mponey_mth b on a.ueserid=b.userid;

小tips:使用on a.ueserid=b.userid避免很多不必要的自连接!仔细观察笛卡尔积之后的数据,便于理解:在这里插入图片描述

where b.mth <a.mth --图中是排过序的

在这里插入图片描述
所以,最后自连接这样写:

--同个用户 同一个月的数据分到同一组 再根据用户、月份排序
selecta.userid,a.mth,max(a.m_money) as current)_mth_money--当月花费,sum(b.m_money) as accumulate_money--累计花费
from tb_money_mtn a join tb_money_mtn b on a.userid=b.userid
where b.mth<=a.mth
group by a.userid,a.mth
order by a.userid,a.mth;

可以看到代码很复杂,而且代码提前创建了tb_money_mtn 这个临时表,不然代码要实现嵌套查询。
在这里插入图片描述

窗口函数sum()实现

方案二:分组统计每个用户每个月的消费金额,然后使用窗口聚合函数实现。

--统计每个用户每个月消费金额及累计总金额
selectuserid,mth,m_money,sum(m_money) over (partition by userid order by mth) as t_money
from tb_money_mtn;

Q:如何实现只计算最近三个月的累计消费金额呢?
—使用rows between 来控制累积的行范围。

比如向前一行到向后两行:(partition by userid order by mth rows between 1 preceding and 2 following)

3 分组TopN问题

在这里插入图片描述

基于row_number实现,按照部门分区,每个部门内部按照薪水降序排序。

selectempno,ename,salary,deptno,row_number() over (partition by deptno order by salary desc) as rn
from tb_emp;

然后取rn<3的即可。

http://www.tj-hxxt.cn/news/119208.html

相关文章:

  • 长沙市建网站竞价
  • 百度网网站建设的目标百度前三推广
  • 凡科建站网页版什么叫优化
  • 更改网站的布局竞价推广和信息流推广
  • 佛山网站建设的品牌seo 重庆
  • 建设网站的法律可行性宁德市有几个区几个县
  • 外贸网站开发公司上海专业的seo公司
  • 兰州新区小程序建站成功的软文推广
  • 一个ip做网站seo权威入门教程
  • 在网站上做承诺沪指重上3000点
  • 如何做网站标头成都百度推广代理公司
  • 网站建设过程中的网站设计怎么做郑州seo外包费用
  • 赣州网站建设服务网站seo诊断优化方案
  • 天津建站服务上海专业优化排名工具
  • 商城微信公众号开发seo tdk
  • 男女做爰免费网站品牌营销策划方案案例
  • 典当行 网站上海营销公司
  • 下列不属于网站建设规划企业网络营销案例分析
  • 在线做初中题网站seo长沙
  • 阿里巴巴官网网址是多少温州seo团队
  • 简约大方的网站推广平台网站有哪些
  • 网站开发协义商城推广软文范文
  • 山东网站seo公司长春网站制作设计
  • 高端网站建设 骆诗互联网营销做什么
  • 360元网站建设 网络服务建站快车
  • 网络营销方案设计毕业设计汕尾网站seo
  • 娱乐网站导航营销手段和技巧
  • 深圳网站程序开发制作公司域名查询官网
  • 高端网站建设公司成都最常用的网页制作软件
  • 柳州做网站人员搜索百度