大数据-hive函数与mysql函数的辨析及练习-将多行聚合成一行

目录

1. 🥙collect_list: 聚合-不去重

2. 🥙collect_set(col): 聚合-去重

3. 🥙mysql的聚合函数-group_concat

4. leetcode练习题


1. 🥙collect_list: 聚合-不去重

将组内的元素收集成数组 不会去重

2. 🥙collect_set(col): 聚合-去重

函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生 Array 类型字段。

//创建一张实验用表,存放用户每天点播视频的记录
create table t_visit_video (username string,video_name string
) partitioned by (day string)
row format delimited fields terminated by ',';//创建visit.txt数据文件
张三,大唐双龙传
李四,天下无贼
张三,神探狄仁杰
李四,霸王别姬
李四,霸王别姬
王五,机器人总动员
王五,放牛班的春天
王五,盗梦空间//导入数据
load data local inpath '/opt/testDemo/visit.txt' into table t_visit_video partition (day='20180516');

 1)按用户分组,取出每个用户每天看过的所有视频的名字(不去重)

select username,collect_list(video_name)
from t_visit_video
group by username;

结果:

2)按用户2)分组,取出每个用户每天看过的所有视频的名字(去重)

select username,collect_set(video_name)
from t_visit_video
group by username;

结果:

3. 🥙mysql的聚合函数-group_concat

GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
将结果集中的多行结果连接成一个字符串-- group_concat对于收集的字段只能是string,varchar,char类型  
--当不指定分隔符的时候,默认使用 ','
//创建一张实验用表,存放用户每天点播视频的记录
create table t_visit_video (
username varchar(20),
video_name varchar(20)
);//插入数据
insert into t_visit_video values
('张三','大唐双龙传'),
('李四','天下无贼'),
('张三','神探狄仁杰'),
('李四','霸王别姬'),
('李四','霸王别姬'),
('王五','机器人总动员'),
('王五','放牛班的春天'),
('王五','盗梦空间');

3)按用户分组,取出每个用户每天看过的所有视频的名字(不去重)

select username,group_concat(video_name)
from t_visit_video
group by username;

结果:

 4)按用户分组,取出每个用户每天看过的所有视频的名字(去重)

select username,group_concat(distinct video_name)
from t_visit_video
group by username;

5)按用户分组,取出每个用户每天看过的所有视频的名字(去重,用;分割视频名字)

select username,group_concat(distinct video_name separator ';')
from t_visit_video
group by username;

结果:

6)按用户分组,取出每个用户每天看过的所有视频的名字(去重,用;分割视频名字,并将视频名字按照字典顺序降序排序) 

select username,group_concat(distinct video_name order by video_name desc separator ';')
from t_visit_video
group by username;

结果:

4. leetcode练习题

leetcode 1484:按日期分组销售产品

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV学习笔记06】- 制作使用轨迹条控制的调色板

内容 学习将轨迹栏绑定到 OpenCV 窗口。你将学习这些函数:cv.getTrackbarPos(), cv.createTrackbar() 等等。 调色板代码 这里,我们将创建用以显示指定颜色的简单程序。 你有一个显示颜色的窗口和三个轨迹栏,用来指定 B,G&…

界面组件DevExpress WPF v23.2 - 更轻量级的主题支持

DevExpress WPF Subscription拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExp…

wpf的资源路径

1、手动命名空间 xmlns:share"clr-namespace:***;assembly**" 2、资源文件 Pack URI 编译到本地程序集内的资源文件的 pack URI 使用以下授权和路径: 授权:application:///。 路径:资源文件的名称,包括其相对于本地…

QT第1天

题目&#xff1a;点击按钮改变文字 需要增加一个count属性&#xff0c;并且只需要定义槽&#xff0c;信号函数已经内置好了 //widget.h#ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Wi…

【工具使用】VS Code设置字宽垂直标尺

一&#xff0c;简介 在编写代码时&#xff0c;每行写的代码过长&#xff0c;会导致查看代码不方便。所以如果能够有一条线提示宽度就好了&#xff0c;如下图所示&#xff1a; 本文就介绍如何在VS Code中添加这条提示线&#xff0c;供参考。 二&#xff0c;具体方法 settin…

etcd跨主机通信与Flannel

跨主机通信 Docker 默认的网络环境下 , 单台主机上的 Docker 容器可以通过 docker0 网桥直接通信 , 而不同主机上的 Docker 容器之间只能通过在主机上做端口映射进行通信。 这种端口映射方式对很多集群应用来说极不方便。 如果能让 Docker 容器之间直接使用自己的 IP 地址进…

云计算任务调度仿真02

前面已经分享过一个仿真项目&#xff0c;但是基于policy gradient方法实现的&#xff0c;考虑到许多人从零到一实现DQN方法有点难度&#xff0c;所以这次分享一个基于DQN实现的仿真项目&#xff0c;非常简单。 这里之所以简单主要得益于它是用pytorch实现的&#xff0c;而pyto…

京东(天猫淘宝)数据分析工具-鲸参谋系统全功能解析——行业大盘、红蓝海市场、品牌分析、店铺分析、商品分析、竞品监控(区分自营和POP)

作为第三方电商数据平台&#xff0c;鲸参谋电商大数据系统能够为品牌方和商家提供包括行业趋势、热门品牌、店铺分析、单品分析在内的多个层面数据分析&#xff0c;帮助商家做出更加准确的经营决策&#xff0c;提升经营效率&#xff0c;实现精准营销。 下面&#xff0c;我们针…

“编程语言大比拼:Python、JavaScript、Java与C#的优劣与选择“。

以下是一篇关于不同编程语言特性的比较和选择的文章。 在当今的编程世界中&#xff0c;有许多种不同的编程语言可供选择。每种语言都有其独特的特性和优点&#xff0c;这使得选择最适合特定项目的语言变得复杂。本文将比较几种流行的编程语言&#xff0c;以帮助您了解它们的特…

gem5学习(11):将缓存添加到配置脚本中——Adding cache to the configuration script

目录 一、Creating cache objects 1、Classic caches and Ruby 二、Cache 1、导入SimObject(s) 2、创建L1Cache 3、创建L1Cache子类 4、创建L2Cache 5、L1Cache添加连接函数 6、为L1ICache和L1DCache添加连接函数 7、为L2Cache添加内存侧和CPU侧的连接函数 完整代码…

机器学习---流形学习

1. 流形学习 作为机器学习研究的热点问题之一&#xff0c;流形学习是要从高维数据集中发现内在的低维流形&#xff0c;并基于低 维流形来实现随后的各种机器学习任务&#xff0c;如模式识别&#xff0c;聚类分析。与欧氏空间不同&#xff0c;流形学习主要 处理的是非欧空间里…

4、指针与数组

数组与指针 指针与地址指针与函数参数指针与数组地址算数运算字符指针与函数指针数组以及指向指针的指针多维数组命令行参数指向函数的指针复杂声明 指针是一种保存变量地址的变量。C语言中&#xff0c;指针的使用非常广泛&#xff0c;原因之一是&#xff0c;指针常常是表达某个…