Hive 使用SQL统计出每个用户的累积访问次数

2023-10-29

我们有如下的用户访问数据

userId	visitDate	visitCount
u01	2017/1/21	5
u02	2017/1/23	6
u03	2017/1/22	8
u04	2017/1/20	3
u01	2017/1/23	6
u01	2017/2/21	8
U02	2017/1/23	6
U01	2017/2/22	4

要求使用SQL统计出每个用户的累积访问次数,如下表所示:
用户id 月份 小计 累积

u01	2017-01	11	11
u01	2017-02	12	23
u02	2017-01	12	12
u03	2017-01	8	8
u04	2017-01	3	3

数据集

u01	2017/1/21	5
u02	2017/1/23	6
u03	2017/1/22	8
u04	2017/1/20	3
u01	2017/1/23	6
u01	2017/2/21	8
u02	2017/1/23	6
u01	2017/2/22	4

1)创建表

create table action
(userId string,
visitDate string,
visitCount int) 
row format delimited fields terminated by "\t";

2)修改数据格式

select userId,
       date_format(regexp_replace(visitDate,"/","-"),'yyyy-MM') month,
       visitCount
from action;

3)计算每人单月访问量

with a as (
    select userId,
           date_format(regexp_replace(visitDate, "/", "-"), 'yyyy-MM') month,
           visitCount
    from action
) select userId,
         month,
         sum(visitCount) ct
from a group by userId, month;

4)按月累计访问量

with a as (
    select userId,
           date_format(regexp_replace(visitDate, "/", "-"), 'yyyy-MM') month,
           visitCount
    from action
),
     b as (select userId,
                  month,
                  sum(visitCount) ct
           from a
           group by userId, month)
select userId,
       month,
       ct,
       sum(ct) over(distribute by userId sort by month)
from b;

或者也可以是

select userId,
       mn,
       mn_count,
       sum(mn_count) over (partition by userId order by mn)
from (select userId,
             mn,
             sum(visitCount) mn_count
      from (select userId,
                   date_format(regexp_replace(visitDate, '/', '-'), 'yyyy-MM') mn,
                   visitCount
            from action) t1
      group by userId, mn) t2;

运行结果

+------+-------+--+--+
|userid|month  |ct|c3|
+------+-------+--+--+
|u01   |2017-01|11|11|
|u01   |2017-02|12|23|
|u02   |2017-01|12|12|
|u03   |2017-01|8 |8 |
|u04   |2017-01|3 |3 |
+------+-------+--+--+

总结

要求使用SQL统计出每个用户的累积访问次数
1 首先求出每个用户每月的累计访问次数
2 同一用户不同月份的数据进行聚合,即(distribute by userId sort by month)

如果是求每个月不同用户的累计访问次数呢?如下

with a as (
    select userId,
           date_format(regexp_replace(visitDate, "/", "-"), 'yyyy-MM') month,
           visitCount
    from action
),
     b as (select userId,
                  month,
                  sum(visitCount) ct
           from a
           group by userId, month)
select month,
       userId,
       ct,
       sum(ct) over (distribute by month sort by userId)
from b;

运行结果如下

+-------+------+--+--+
|month  |userid|ct|c3|
+-------+------+--+--+
|2017-01|u01   |11|11|
|2017-01|u02   |12|23|
|2017-01|u03   |8 |31|
|2017-01|u04   |3 |34|
|2017-02|u01   |12|12|
+-------+------+--+--+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive 使用SQL统计出每个用户的累积访问次数 的相关文章

  • 结果集未打开。验证自动提交已关闭。阿帕奇·德布里

    我的数据库使用 apache derby 我能够对数据库执行插入操作 以下是尝试显示我唯一的表 MAINTAB 的内容的代码摘录 java sql Connection 的实例是 dbconn ResultSet word Statemen
  • 将子查询的结果插入表中并带有常量

    相关表格的概要如下 我有一个表 我们称之为联接 它有两列 都是其他表的外键 我们将这两列称为 userid 和buildingid 因此 join 看起来像 join userid buildingid 我基本上需要在这个表中插入一堆行 通
  • MySQL如何根据字段是否存在来插入新记录或更新字段?

    我正在尝试实现一个评级系统 在数据库表中保留以下两个字段 评级 当前评级 num rates 迄今为止提交的评分数量 UPDATE mytable SET rating rating num rates theRating num rate
  • SQL Server 之间

    我有一个表 其中有年 月和一些数字列 Year Month Total 2011 10 100 2011 11 150 2011 12 100 2012 01 50 2012 02 200 现在 我想要SELECT2011 年 11 月至
  • sql 查询的权限被拒绝

    我正在尝试通过经典的 asp 记录集执行以下查询 SQL Select P Name as P Name P Description as P Description from L PagePermission inner join A P
  • SQL 用新值替换旧值

    我有一个名为tbl Products 其中有一列名为articlenumber并且充满了像这样的数字s401 s402 etc 我生成了一个包含新商品编号的列表 它将替换旧的商品编号 s401 I00010 s402 I00020 s403
  • 我不确定在 SQL 中声明这些变量时出了什么问题

    我有以下代码 USE pricingdb go CREATE TABLE dbo Events 060107 2012 Date Time varchar 20 COLLATE SQL Latin1 General CP1 CI AS NU
  • MySql如何通过过滤多列来限制多个数字?

    我想从数据库中获取 4 个不同类别的 50 个问题 我想要 4 个不同类别中每个类别的不同数量的问题 我的结果集必须包含第一类 12 个问题 第二类 20 个问题 第三类 10 个问题和第四类 8 个问题 我的问题表中总共有 50 个问题
  • 在蜂巢中出现错误

    当我连接到 ireport 时 如果说在 hive shell 中显示表 则会出现此错误 元数据错误 java lang RuntimeException 无法实例化 org apache hadoop hive metastore Hiv
  • Postgresql 中的 id 列位置重要吗?

    我正在测试删除主键列 id 的迁移 我想使用外键作为主键 当我运行并恢复迁移时 我看到表的状态是相同的 只是 id 列现在是最后一个 它会以任何方式改变我的数据库的行为吗 我是否应该费心去恢复迁移恢复代码中的列顺序 理论上一切都应该没问题
  • MySQL 子查询返回多行

    我正在执行这个查询 SELECT voterfile county Name voterfile precienct PREC ID voterfile precienct Name COUNT SELECT voterfile voter
  • 具有 LINQ 支持的最完整的 ORM?

    我正在寻找一个提供完整或接近完整的 LINQ 支持的 ORM LINQ 到 SQL 支持 LINQ 内部的所有内容 Contains Math Log 等 在不创建新数据上下文的情况下无法预先加载关系属性 ADO NET 实体框架 糟糕的
  • SQL Server PIVOT 函数

    我有一个检索所有代理及其模块的查询 结果集将每个模块返回 1 行 SELECT am agentID AS agentid pa agentDisplayName agentdisplayname m ModuleName ModuleNa
  • 如何检测 Postgres 中持有锁的查询?

    我想不断跟踪 postgres 中的互锁 我碰到锁具监控 https wiki postgresql org wiki Lock Monitoring文章并尝试运行以下查询 SELECT bl pid AS blocked pid a us
  • Quartz.NET 设置 MisfireInstruction

    我正在使用 Quartz NET 在 C 中工作 并且在 CronTrigger 上设置失火指令时遇到问题 我正在运行安装了 Quartz DB 的 SQL 后端 我有以下代码 可以很好地创建作业和运行调度程序 IScheduler sch
  • 通过条件查询获取表的第一行

    如何使用以下命令获取表格的第一行criteria or HQL query 表创建脚本 CREATE TABLE MonthlySubscriber MSISDN bigint 20 NOT NULL MonthOfYear int 11
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • Yii 查询时对相关模型的限制

    我遇到了极限问题 我正在使用的代码如下 model PostCategory model record model gt with array posts gt array order gt posts createTime DESC li
  • 让 Prometheus 发送 SQL 查询

    我正在尝试使用普罗米修斯 https prometheus io 监视我的 MySQL 数据库 但似乎找不到添加 SQL 查询的区域 例如 我想运行一个返回值的 SQL 查询 然后将该值添加到图表中 发送警报 有没有办法让 Promethe
  • 案例陈述以确定我是否应该结合

    我目前想做某种条件联合 给出以下示例 SELECT age name FROM users UNION SELECT 25 AS age Betty AS name 假设我只想在 用户 计数 gt 2 时合并第二个语句 否则不合并两者 总之

随机推荐

  • 多线程事务

    背景介绍 1 最近有一个大数据量插入的操作入库的业务场景 需要先做一些其他修改操作 然后在执行插入操作 由于插入数据可能会很多 用到多线程去拆分数据并行处理来提高响应时间 如果有一个线程执行失败 则全部回滚 2 在spring中可以使用 T
  • html转turndown 踩雷 以及成功方案 (vue2 + tinymce富文本框)

    showdown 这里使用showdown转换 富文本框内所有格式够可以 但是表格不行 表格转换为竖线 内容丢失 如果没有表格需求 可参 注意 这里的this markdown 是在data中声明的 this value为你要转换的html
  • jdbc连接oracle连接重置问题

    error ConnectionProviderFactory initializeConnectionProviderFromConfig 173 Initializing connection provider org springfr
  • 服务器系统的安装方法,服务器的操作系统安装方法

    服务器的操作系统安装方法 内容精选 换一换 如果Windows操作系统云服务器未安装密码重置插件 可以参见本节内容重新设置密码 本节操作介绍的方法仅适用于修改Windows本地账户密码 不能修改域账户密码 Linux操作系统请参见重置Lin
  • K-小千很好奇-(素数)2023河南萌新联赛第(八)场:南阳理工学院

    include
  • MYSQL-ORCALE decode函数在MYSQL中的实现

    一 select ifnull etl filed col mysql中实现oracle的decode函数需要用到三个函数 1 ELT N str1 str2 str3 若N 1 则返回值为 str1 若N 2 则返回值为 str2 以此类
  • 蓝桥杯java基础练习学习。

    一 基础练习 大部分程序来自查阅网络资源总结 1 A B的问题 package Chapter01 import java util Scanner A B的问题 public class Demo01 public static void
  • MPI > Ubuntu22.04安装MPICH4.0.2并行平台

    MPICH4 0 2 MPICH4 0 2 环境 下载 安装 环境变量 测试单机环境 准备多机环境 配置MPI多机环境 MPICH4 0 2 搭建PSRS Parallel Sorting by Regular Sampling 算法运行环
  • 《数据挖掘导论》归纳笔记

    目录 第一章 绪论 第二章 数据 2 0引言 2 0 1数据类型 2 0 2数据的质量 2 0 3使数据适合挖掘的预处理步骤 2 0 4根据数据联系分析数据 2 1数据类型 2 1 1 属性与度量 2 1 2 数据集的类型 2 2数据质量
  • android 内存溢出前退出界面,Android 导航(介绍)页面ViewPager内存溢出解决方法...

    现在基本每个Android App都会标配一个启动介绍的页面 或做产品介绍 或做app功能展示 既然起导航界面 基本思路就是用ViewPager实现 图片引自UI中国一设计师的设计图片 正好这几天在做这个导航界面 我的测试手机是魅族MX3
  • 常见经济指标学习

    央行统计数据 http www pbc gov cn diaochatongjisi 116219 116319 3959050 3959052 index html 资产负债表 可以看出央行在扩表还是缩表 央行中的资产代表着 基础货币 基
  • 2023高频前端面试题总结(附答案)

    html与css 1 img 的title与alt有什么区别 title是提示文本 鼠标放在图片上提示的文字 alt 是图片显示不出来时的文字替代 能显示出来就不用替换 2 label的作用是什么 怎么用 Label与表单input配合使用
  • 无法定位程序输入点于动态链接库怎么办

    在使用笔记本电脑的时候 如果操作不小心误删了某些文件 可能会导致无法定位程序 打开程序时会被提示无法定位程序输入点于动态链接库怎么办 今天 小编就把无法定位程序输入点于动态链接库的解决方法分享给大家 更多一键重装系统教程可参考小白系统网 解
  • OpenCV(三)——图像分割(二)

    目录 4 边缘检测 4 1 图像梯度的概念 4 2 模板卷积和梯度图的概念 4 3 梯度算子
  • KylinOS-Server定制制作属于自己的ISO镜像文件

    1 准备 镜像文件 Kylin Server 10 SP1 Release Build20 20210518 x86 64 iso 然后安装在服务器上 用来定制ISO的服务器 根据自己的需求选择安装 我这里选择的是GUI安装 2 安装制作I
  • 前端ps基本操作

    在还原设计时 我们需要使用 photoshop打开sd格式的设计 作为的工程师 我们不要太多的ps技巧 只需要了 一些简单的基本操作即可 1 alt 滚轮缩放放图片 2 空格 鼠标左健拖动图片 3 shift m切换选取工具 使用鼠标左键选
  • ApplicationListener--- Spring源码从入门到精通(二十九)

    上篇文章说了bean对象创建之前调用的两个方法 BeanDefinitionRegistryPostProcessor Spring源码从入门到精通 二十八 这篇文章主要介绍spring监听事件源码及实例解析 ApplicationList
  • 怎么在Windows下使用Makefile文件

    推荐阅读 virtio net 实现机制 一 图文并茂 浅析linux内核网络协议栈 linux bridge 深度解析linux内核模块编译makefile 前言 如果熟悉在Linux开发的话 肯定知道Makefile文件的用处 它给我们
  • react组件的三种定义方法、准确理解类组件函数组件以及使用方法

    文章目录 前言 类组件 通过function定义 通过class定义 函数组件 虚拟Dom分类 如何创建虚拟DOM jsx React createElement 前言 根据官方描述react组件分为函数组件和类组件 是否使用jsx是通过以
  • Hive 使用SQL统计出每个用户的累积访问次数

    我们有如下的用户访问数据 userId visitDate visitCount u01 2017 1 21 5 u02 2017 1 23 6 u03 2017 1 22 8 u04 2017 1 20 3 u01 2017 1 23 6