HQL面试题练习 —— 品牌营销活动天数

news2024/7/7 16:27:37

题目来源:小红书

目录

  • 1 题目
  • 2 建表语句
  • 3 题解

1 题目

有营销活动记录表,记录了每个品牌每次营销活动的开始日期和营销活动的结束日期,现需要统计出每个品牌的总营销天数。

注意:
1:苹果第一行数据的营销结束日期比第二行数据的营销开始日期要晚,这部分有重叠的日期的要去重计算。
2:苹果第二行数据的营销结束日期和第三行的开始日期不连续,2019-09-07以及2019-09-08不统计到营销天数中。

样例数据

+--------+-------------+-------------+
| brand  | start_date  |  end_date   |
+--------+-------------+-------------+
| 华为   | 2018-08-04  | 2018-08-05  |
| 华为   | 2018-08-04  | 2020-12-25  |
| 小米   | 2018-08-15  | 2018-08-20  |
| 小米   | 2020-01-01  | 2020-01-05  |
| 苹果   | 2018-09-01  | 2018-09-05  |
| 苹果   | 2018-09-03  | 2018-09-06  |
| 苹果   | 2018-09-09  | 2018-09-15  |
+--------+-------------+-------------+

样例结果

+--------+-----------+
| brand  | act_days  |
+--------+-----------+
| 华为     | 875       |
| 小米     | 11        |
| 苹果     | 13        |
+--------+-----------+

2 建表语句


CREATE TABLE IF NOT EXISTS t_marketing_act (
    brand STRING, --品牌
    start_date STRING, -- 营销活动开始日期
    end_date STRING -- 营销活动结束日期
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS ORC;

insert into t_marketing_act(brand, start_date, end_date) values
('华为','2018-08-04','2018-08-05'),
('华为','2018-08-04','2020-12-25'),
('小米','2018-08-15','2018-08-20'),
('小米','2020-01-01','2020-01-05'),
('苹果','2018-09-01','2018-09-05'),
('苹果','2018-09-03','2018-09-06'),
('苹果','2018-09-09','2018-09-15');

3 题解


本题难点在解决交叉问题,但是题目给出的是开始日期和结束日期,我们根据开始和结束日期,使用生成函数,生成活动期间每天的记录,然后根据品牌分组,对日期进行去重即可。

-- 2. 根据品牌分组,act_date进行去重统计
with t as (
-- 1. 生成每次活动每天的记录
select
    brand,
    start_date,
    end_date,
    t.pos,
    t.value,
    date_add(start_date, t.pos) as act_date
    from t_marketing_act
    lateral view posexplode(split(space(datediff(end_date, start_date)), '')) t as pos, value)
select
    brand,
    count(distinct act_date) as act_days
from t
group by brand;

拓展:

  1. DATE_ADD函数在SQL和HiveQL(HQL)中的用法有所不同。
  • SQL中的DATE_ADD:
    • DATE_ADD(date, INTERVAL value unit)
      • date:要操作的日期。
      • value:要添加的时间间隔数值。
      • unit:时间间隔的单位,例如DAY、MONTH、YEAR等。
  • HiveQL中的DATE_ADD,通常用来向日期添加指定的天数。
    • DATE_ADD(date, days)
      • date:要操作的日期
      • days:要添加的天数,可以是正数(增加天数)或负数(减少天数)。
  1. space(n)函数生成一个包含n个空格的字符串。
  2. 在Python中,将字符串按空字符串''分割是不合法的,会引发错误。但在Hive中,这种操作是合法的,并且常用于将字符串的每个字符分割成单独的元素
  3. 在HiveQL中,POSEXPLODE 是一个特殊的表生成函数,它用于将数组或映射类型的数据展开成多行,并且同时生成每个元素的索引和值。

假设有一个包含数组数据的表example_table

在这里插入图片描述

SELECT
    id,
    pos,
    value
FROM example_table
LATERAL VIEW POSEXPLODE(values) exploded_table AS pos, value;

查询结果将会是:

在这里插入图片描述

在这个例子中:

  • POSEXPLODE(values):将values列中的数组展开。
  • LATERAL VIEW:将POSEXPLODE的结果与原始表一起展平。
  • pos:数组元素的索引。
  • value:数组元素的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1685038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统思考—跳出症状看全局

今年的《系统思考—跳出症状看全局》课程不断进行了迭代优化。通过一个企业的真实案例,我们与学员共同探讨了线性思考与系统思考的区别,并学习了如何从全局角度做出更加明智的决策,一切就绪,期待学员的共创。

xxe漏洞--xml外部实体注入漏洞

1.xxe漏洞介绍 XXE(XML External Entity Injection)是一种攻击技术,它允许攻击者注入恶意的外部实体到XML文档中。如果应用程序处理XML输入时未正确配置,攻击者可以利用这个漏洞访问受影响系统上的敏感文件、执行远程代码、探测内…

操作系统底层运行原理 —— 基于线程安全的消息机制

前言 学过Android应用开发的大概都知道Handler这个东东,这也是面试中老生常谈的问题。其实不仅仅是Android,iOS以及PC的操作系统,底层也离不开消息机制。这个属于生产消费者问题。 什么是生产者消费者模式 生产者消费者模式(Pr…

【UE Websocket】“WebSocket Server”插件使用记录

1. 在商城中下载“WebSocket Server”插件 该插件具有如下节点,基本可以满足WebSocket服务端的所有需求 2. 如果想创建一个基本的服务端,我们可以新建一个actor蓝图,添加如下节点 3. UE运行后,我们可以使用在线的websocket测试助手…

使用MicroPython和pyboard开发板(15):使用LCD和触摸传感器

使用LCD和触摸传感器 pybaord的pyb对LCD设备也进行了封装,可以使用官方的LCD显示屏。将LCD屏连接到开发板,连接后。 使用LCD 先用REPL来做个实验,在MicroPython提示符中输入以下指令。请确保LCD面板连接到pyboard的方式正确。 >>…

认识NXP新型微处理器:MCX工业和物联网微控制器

目录 概述 1 MCX工业和物联网微控制器介绍 2 MCX 系列微控制器类型 2.1 MCX N系列微控制器 2.1.1 主要特征 2.1.2 MCX N系列产品 2.1.3 MCX N9xx和N5xx MCU选型表 2.2 MCX A系列微控制器 2.2.1 主要特征 2.2.2 MCX A系列产品 2.2.3 MCX A MCU的架构 2.3 MCX W系…

Unity射击游戏开发教程:(24)创造不同的敌人

在这篇文章中,我们将讨论添加一个可以承受多次攻击的新敌人和一些动画来使事情变得栩栩如生。敌人没有任何移动或射击行为。这将有助于增强未来敌人的力量。 我们将声明一个 int 来存储敌人可以承受的攻击数量,并将其设置为 3。

Unity修改Project下的Assets的子文件的图标

Unity修改文件夹的图标 示例: 在右键可以创建指定文件夹。 github链接 https://github.com/SeaeeesSan/SimpleFolderIconCSDN资源的链接 https://download.csdn.net/download/GoodCooking/89347361 去GitHub下载支持原作者哦。重要的事情 截图来自GitHub 。 U…

信息系统项目管理师0127:工具与技术(8项目整合管理—8.6管理项目知识—8.6.2工具与技术)

点击查看专栏目录 文章目录 8.6.2 工具与技术8.6.2 工具与技术 专家判断管理项目知识过程中,应征求具备如下领域相关专业知识或接受过相关培训的个人或小组的意见,涉及的领域包括:知识管理、信息管理、组织学习、知识和信息管理工具以及来自其他项目的相关信息等。 知识管理…

【2024】高校网络安全管理运维赛

比赛时间:2024-05-06 Re-easyre 基本的base64换表,用CyberChef解密 Re-babyre 进入主函数,发现输入四次 看一下就知道是大数求解 (当初写的时候差不多 不知道为什么第四个总是算错…) from z3 import *s Solver() # 设置一个解方程的类…

产品经理-需求收集(二)

1. 什么是需求 指在一定的时期中,一定场景中,无论是心理上还是生理上的,用户有着某种“需要”,这种“需要”用户自己不一定知道的,有了这种“需要”后用户就有做某件事情的动机并促使达到其某种目的,这也就…

Redis 主从复制、哨兵与集群

一、Redis 主从复制 1. 主从复制的介绍 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下&a…

如何快速从手动测试转向自动化测试

寻求具有无缝持续集成和持续交付 (CI/CD) 的高效 DevOps 管道比以往任何时候都更加重要。想象一下这样一个场景:您的软件组织显著减少了人工工作量、降低了成本,并更加自信地发布了软件更新。换句话说,通过将 Web UI 和 API 测试结合在一起&a…

展现金融科技前沿力量,ATFX于哥伦比亚金融博览会绽放光彩

不到半个月的时间里,高光时刻再度降临ATFX。而这一次,是ATFX不曾拥有的桂冠—“全球最佳在线经纪商”(Best Global Online Broker)。2024年5月15日至16日,拉丁美洲首屈一指的金融盛会—2024年哥伦比亚金融博览会(Money Expo Colombia 2024) 于…

前端开发攻略---用Vue实现无限滚动的几种方法

目录 1、原理 2、使用CSS动画 代码: 3、使用JS实现 代码: 1、原理 复制内容:将需要滚动的内容复制一次,并将这些副本放置在原始内容的后面。这样,当用户滚动到内容的末尾时,就会无缝地切换回到内容的起…

【Python】—— 公共的方法

目录 (一)公共操作 1.1 公共操作之运算符加号 1.2 公共操作之运算符乘号 1.3 公共操作之运算符判断数据是否存在 (二)公共方法 2.1 公共方法-len 2.2 公共方法-del 2.3 公共方法-max和min 2.4 公共方法-range 2.5 公共方…

如果 SEC 批准以太坊现货 ETF,会有更多山寨币 ETF 吗?

撰文:Protos 编译:Ismay,BlockBeats 文章来源香港Web3媒体Techun News 编者按:SEC 已与交易平台和 ETF 申请人就 19b-4 规则变更请求进行沟通,这表明以太坊现货 ETF 获批的可能性大大增加。与此同时山寨币投资者猜测…

嵌入式开发中树莓派和单片机关键区别

综合了几篇帖子作以信息收录:树莓派和单片机作为嵌入式系统领域中两种广泛使用的设备,各自有着不同的特性和应用场景,文章从五个方面进行比对展开。 架构与性能: 树莓派:是一款微型计算机,通常配备基于AR…

解决 git:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0

解决 git:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 问题 git pull报错:fatal: unable to access ‘https://github.com/aircrushin/ultrav-music.git/’: Failed to connect to github.com port 443 after 21077 ms: Couldn’t connect to serve…

成本管控:如何利用 SOLIDWORKS Costing 高效估算成本?

现在全球材料短缺、生活成本上升以及能源价格上涨而导致的成本上升问题突显。 生产产品需要的成本以及如何让产品的成本下降就成为很多的企业越来越关注的问题。 SOLIDWORKS Costing是集成到 SOLIDWORKS Professional 和 Premium 中的一款允许用户和制造商估算产品生产成本的工…