| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 大数据--hive--经典SQL题目(百度面试SQL题目) -> 正文阅读 |
|
[大数据]大数据--hive--经典SQL题目(百度面试SQL题目) |
目录 一:题目一:第n多和连续三天思维有一个日志数据解析得到的table 有三个字段: 1)统计近10天每日行为数量 2)行为第三多的用户及其数量 3)连续3天有行为的用户? 解答: 1.1?统计近10天每日行为数量1.1.1 答案:
1.1.2 注意事项:1)近10天如何表示。 ? ? -- sql数据库中使用getDate()函数作用是获取系统当前时间。 ? datediff() :? 日期比较函数。 ? ? ? ? ? ? ?-- 语法:datediff(string? ?enddate,? string? ?startdate), 返回值为int。 ? date_add(string? ? startdate, int days)? ?返回开始日期startdate增加days后的日期。 ??date_sub(): 减法
2)? 理解题目意思。 ? ? ? 题目要求是求近10天每日行为总数,而不是近10天每个用户的行为总数。 3)to_date() 和unit_timestamp()异同点。 ? ? ?to_date('2018-12-08 10:03"01')? ? -- 2018-12-08? 返回日期字段中的日期部分 ? ? ?注意:sql中获取当前时间可以使用getdate()来获取当前时间,那么hive中获取 接下来总结一下: to_date():返回日期字段中的日期部分 current_timestamp() : 获取到当前时间。 ? ? ? ? ?eg: select? ? current_timestamp(); 2019-07-04 10:22:09.4334 ? ? ? ? hive中unix_timestamp()函数获取到当前的时间戳为10位的bigint类型数值,该数值只精确到秒级。 unit_timestamp()函数: 得到当前时间戳。 ? ? ? ? ?eg: select? unix_timestamp(current_timestamp()) ;? ?-- 138278423623 from_unixtime():将时间戳转换为日期类型。 ? ? ? ? ?eg: select? from_unixtime(126437826583,'yyyy-MM-dd HH:mm:ss'); 1.2?行为第三多的用户及其数量1.2.1 答案
1.2.2 注意事项开窗函数的使用 开窗函数语法:partition by可以省略,但是order by不能省。 ? ? 此处不能加partition by 否则运行出来的答案不对。因为已经group by了,每个组里面就只有聚合的数量这一条记录。此时如果再开窗的话,就是对每个用户的一条记录进行order by这样没有任何意义,我们不加partition by的话,这样是对所有的用户进行开窗,结果就符合我们的要求了。 1.3 连续3天有行为的用户1.3.1? 思路1)因为每天用户登陆次数不止一次,所以需要先将用户每天的登陆日期去重。 2)再使用row_number()? over(partition by _? order by _)函数将用户id分组,按照登陆时间进行排序,得到rc。 3)计算登陆日期减去排序rc指得到间距gap,核心思想:用户连续登陆的情况下,每次相减的结果都相同。 4)按照用户,间距进行分组并且求和,筛选大于等于3天登陆的用户。 1.3.2 答案
1.3.3 注意事项? ? 分组后进行过滤的话不需要再写一层select,直接使用having即可。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:05:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |