首页 > 数据库 >Hive 刷题——HiveSql 实现分钟级的趋势图

Hive 刷题——HiveSql 实现分钟级的趋势图

时间:2024-03-28 12:48:43浏览次数:18  
标签:pay 00 HiveSql Hive trade time gmv select 刷题

问题描述

在Hive中,怎么用sql实现分钟级的趋势图?比如从交易表中,如何统计0点到每分钟的交易趋势图?原表:trade_A(trade_id,pay_time(格式是2020-08-05 10:30:28),pay_gmv)。希望用sql实现分钟级的0点到当前分钟的GMV。结果表:result_A(minute_rn(分钟顺序),pay_gmv_td(每分钟的交易额,都是0点到当前分钟的累加值))。

示例数据

with temp as (select 101 as trade_id, '2024-03-05 00:30:28' as pay_time, 100 as pay_gmv
              union all
              select 102 as trade_id, '2024-03-05 00:30:58' as pay_time, 200 as pay_gmv
              union all
              select 103 as trade_id, '2024-03-05 00:35:28' as pay_time, 300 as pay_gmv
              union all
              select 104 as trade_id, '2024-03-05 01:36:28' as pay_time, 400 as pay_gmv)

参考实现

with temp as (select 101 as trade_id, '2024-03-05 00:30:28' as pay_time, 100 as pay_gmv
              union all
              select 102 as trade_id, '2024-03-05 00:30:58' as pay_time, 200 as pay_gmv
              union all
              select 103 as trade_id, '2024-03-05 00:35:28' as pay_time, 300 as pay_gmv
              union all
              select 104 as trade_id, '2024-03-05 01:36:28' as pay_time, 400 as pay_gmv)

select minute_rn,
       sum(nvl(pay_gmv, 0)) over (partition by date_format(minute_rn, 'yyyy-MM-dd') order by minute_rn) as pay_gmv_td
from (select from_unixtime(unix_timestamp(t1.min_pay_time) + tab.pos * 60, 'yyyy-MM-dd HH:mm') as minute_rn
      from (select min(date_format(pay_time, 'yyyy-MM-dd 00:00:00')) as min_pay_time --取最小日期
                 , max(date_format(pay_time, 'yyyy-MM-dd 23:59:59')) as max_pay_time --取最大日期
            from temp) t1
               lateral view posexplode(split(
                       repeat(',',
                              cast(ceil((unix_timestamp(max_pay_time) - unix_timestamp(min_pay_time)) / 60) as int)),
                       ',')) tab as pos, val) t1
         left join (select date_format(pay_time, 'yyyy-MM-dd HH:mm') as pay_time
                         , sum(pay_gmv)                              as pay_gmv
                    from temp
                    group by date_format(pay_time, 'yyyy-MM-dd HH:mm')) t2
                   on t1.minute_rn = t2.pay_time
order by 1;

 

标签:pay,00,HiveSql,Hive,trade,time,gmv,select,刷题
From: https://www.cnblogs.com/wdh01/p/18095094

相关文章

  • Oracle重做日志文件clear logfile与clear unarchived logfile浅析
    首先,从v$log动态视图中观察到ARC和STATUS两个字段STATUS:分为CURRENT、ACTIVE和INACTIVE三种,当数据库进程DBWn进行一次写入,脏数据从内存刷写到redologfile中,这时承载数据写入的redologfile状态即为CURRENT;而数据从redologfile拷贝到归档目录下时处于ACTIVE状态,完成数据从内存......
  • hiveserver2拒绝连接
    一、报错内容 二、解决办法基本都是core-site.xml文件中没做好代理导致的。在文件中添加如下配置<property><name>hadoop.proxyuser.xxx.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.x......
  • 第1章 Hive基本概念
    1.1什么是Hivehive简介Hive:由facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL的查询功能。2)Hive本质:将HQL转化成MapReduce程序。3)Hive的三个要点:Hive处理的数据存储在HDFS......
  • 刷题日记
    UpdateOn:2024/3/26P8867建造军营显然,当且仅当桥被摧毁时图才会变成两个子图,那么可以想到Tarjan求边双联通,重构成一棵树。定义\(f_{i,0/1}\)为强制只有根节点为\(u\)的子树内建筑军营,若里面有军营则,一定有被守卫的边与\(u\)相通。P3225[HNOI2012]矿场搭建分类......
  • 动态规划刷题(算法竞赛、蓝桥杯)--数字三角形(线性DP)
    1、题目链接:[USACO1.5][IOI1994]数字三角形NumberTriangles-洛谷#include<bits/stdc++.h>usingnamespacestd;intr;constintN=1010;inta[N][N];intmain(){ cin>>r; for(inti=1;i<=r;i++){ for(intj=1;j<=i;j++){ cin>>a[i][j]; ......
  • Hive 刷题——累计占比问题
    问题描述现在有一张每个年份的每个部门的收入表。现在需要算每个部门的收入占同类型部门的收入的占比和当年整个公司的收入占比。要求一条SQL计算出来。比如研发部和产品部属于同类型的,都是产研;财务部和人事部都属于职能。yeardeptincome2024研发部50002024......
  • 小阳同学刷题日记-209. 长度最小的子数组
        题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl,numsl+1,...,numsr-1,numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。    惯例,献上我自......
  • LeetCode刷题Day11(补卡)
    20.有效的括号题目链接:leetcode20.有效的括号文章讲解:代码随想录视频讲解:哔哩哔哩视频这题考察的是栈的使用,遍历字符串,如果是左括号存入栈中,如果是右括号则对比栈的头部是否为与之匹配的左括号,如果不是则返回false,最后若栈为空则正好匹配返回true,详细代码如下:cl......
  • 搭建hive环境,并解决后启动hive命令报 hive: command not found的问题
    一、问题解决 1、问题复现2、解决问题        查阅资料得知该问题大部分是环境变量配置出了问题,我就输入以下命令进入配置文件检查自己的环境变量配置:[root@node03~]#vi/etc/profile        检查发现自己的hive配置没有问题 ,于是我就退出,然后更新......
  • Ubuntu实现Hive与HBase的安装与配置(单机)
    (一)Hive的安装与配置 Hive下载链接:https://mirrors.bfsu.edu.cn/apache/hive/(1)将下载好的Hive文件(版本:3.1.2)解压到/usr/local目录下sudotar-zxvf./apache-hive-3.1.2-bin.tar.gz-C/usr/local(2)切换至目录/usr/local,将文件夹名改为hive,并且修改文件权限给本账户cd/......