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

hql面试题之上海某资深数仓开发工程师面试题-求不连续月份的月平均值

1.题目

A,B两组产品的月平均值,月平均值是当月的前三个月值的一个平均值,注意月份是不连续的,如果当月的前面的月份不存在,则为0。如A组2023-04的月平均值为2023年1月的数据加2023-02月的数据的平均值,因为没有其他月份则需要再加一个0,再求平均值。要求:求出每个月的月平均值。
‘A’,‘2023-01’,3030
‘A’,‘2023-02’,5464
‘A’,‘2023-04’,5467
‘A’,‘2023-05’,4646
‘A’,‘2023-06’,8546
‘B’,‘2022-01’,9846
‘B’,‘2022-02’,1562
‘B’,‘2022-03’,2733
‘B’,‘2022-05’,8833
‘B’,‘2022-06’,8787

2.建表

create table if not exists non_continuous_time(
product string comment '产品号',
pro_time string comment '时间',
pro_values int comment '值'
)comment '非连续时间表'
insert into non_continuous_time values
('A','2023-01',3030),
('A','2023-02',5464),
('A','2023-04',5467),
('A','2023-05',4646),
('A','2023-06',8546),
('B','2022-01',9846),
('B','2022-02',1562),
('B','2022-03',2733),
('B','2022-05',8833),
('B','2022-06',8787)

3.思路

使用lag窗口函数,lag的偏移量可以锁定前三个月的数据,没有的显示为0;

select product,pro_time,pro_values,coalesce(lag(pro_values,1) over(partition by product order by pro_time),0) lg_one,coalesce(lag(pro_values,2) over(partition by product ORDER BY pro_time),0) lg_two,coalesce(lag(pro_values,3) over(partition by product ORDER BY pro_time),0) lg_thr
from non_continuous_time

在这里插入图片描述

最终结果:

selecta.product,a.pro_time,(lg_one+lg_two+lg_thr)/3  sum_values
from
(
select product,pro_time,pro_values,coalesce(lag(pro_values,1) over(partition by product order by pro_time),0) lg_one,coalesce(lag(pro_values,2) over(partition by product ORDER BY pro_time),0) lg_two,coalesce(lag(pro_values,3) over(partition by product ORDER BY pro_time),0) lg_thr
from non_continuous_time
)a

在这里插入图片描述

http://www.lryc.cn/news/248488.html

相关文章:

  • VT驱动开发
  • 火柴人版王者-Java
  • docker 中的–mount 和-v 参数有啥区别
  • 设计规则:模块化的力量
  • 数据结构与算法之递归: LeetCode 78. 子集 (Typescript版)
  • C# 使用 Fody 监控方法执行时间
  • J2EE征程——第一个纯servletCURD
  • BatchOutput PDF for Mac(PDF 批量处理软件)
  • 记一次oracle错误处理
  • hugging face下载dataset时候出现You must be authenticated to access it.问题解决
  • 数据结构---树
  • tomcat调优配置
  • 基于深度学习的点云三维目标检测方法综述
  • Linux命令中的符号
  • BTCPay Server:免费、安全、开源的比特币支付处理器 | 开源日报 No.90
  • 【数据挖掘】国科大刘莹老师数据挖掘课程作业 —— 第三次作业
  • Windows挂载NFS
  • 数据结构第五课 -----二叉树的代码实现
  • 优橙内推北京专场——5G网络优化(中高级)工程师
  • Mysql DDL语句建表及空字符串查询出0问题
  • 深入ArkTS:应用状态管理与LocalStorage装饰器详解【鸿蒙专栏-11】
  • 管理Android12系统的WLAN热点
  • 从0开始学习JavaScript--JavaScript 中 `let` 和 `const` 的区别及最佳实践
  • 【上海大学数字逻辑实验报告】二、组合电路(一)
  • lodash中foreach踩坑
  • Unity C++交互
  • 人工智能-优化算法之动量法
  • 【MySQL】InnoDB中的索引
  • 《软件工程原理与实践》复习总结与习题——软件工程
  • 软工2021上下午第六题(组合模式)