HQL函数--打地鼠游戏及WordCount案例分析及实现

news2025/1/19 17:02:24

1.打地鼠

uid,hit,m
1,1,0
1,2,1
1,3,1
1,4,1
1,5,0
1,6,0
1,7,1
2,1,1
2,2,1
2,3,1
2,4,1
2,5,1
3,1,1
3,2,1
3,3,1
3,4,0
3,5,0
3,6,1
3,7,0
3,8,1

create table tb_ds(
      uid int ,  -- 用户名
      hit int ,  -- 第几次打地鼠
      m int      -- 是否命中 1命中 0 未命中
)
row format delimited fields terminated by ','  ;
load data local inpath '/root/ds.txt' into table tb_ds ;

select  * from tb_ds;

 案例分析

查询用户最大连续命中次数

--查询命中的的记录
select *
from tb_ds
where m = 1;

-- 用户分组 记录编号
select uid, hit, row_number() over (partition by uid order by hit) as rn
from tb_ds
where m = 1;

-- hit-rn 
with t1 as (select uid, hit, row_number() over (partition by uid order by hit) as rn from tb_ds where m = 1)
select *, (hit - rn) as sub
from t1

-- 分组得到每个用户的连续击中
with t1 as (select uid, hit, row_number() over (partition by uid order by hit) as rn from tb_ds where m = 1),
     t2 as (select *, (hit - rn) as sub from t1)
select uid, count(*) as hit_count
from t2
group by uid, sub

-- 用户分组得到每个用户最大次数
with t1 as (select uid, hit, row_number() over (partition by uid order by hit) as rn from tb_ds where m = 1),
    t2 as (select *, (hit-rn) as sub from t1 ),
    t3 as (select uid, count(*) as hit_count from t2 group by uid, sub )
select uid, max(hit_count) as hit_count
from t3
group by uid;

2.WordCount

 1.建表数据

 Why Studying History Matters
Studying a subject that you feel pointless is never a fun or easy task.
If you're study history, asking yourself the question "why is history important" is a very good first step.
History is an essential part of human civilization.
You will find something here that will arouse your interest, or get you thinking about the significance of history.

2.分析 

 

 

create table t_wc(
    line string
)row format delimited lines terminated by "\n";

load data local inpath '/root/word.txt' overwrite into table t_wc;
select * from t_wc;
-- 使用正则表达式去掉特殊符号 将 除了单词字符 及 ' 和 空格的 所有字符替换成空串
select regexp_replace(line, '[^a-zA-Z_0-9\'\\s]', "") as word_line
from t_wc;
-- 使用split进行切割 将一行数据切割为一个数组
select split(regexp_replace(line, '[^a-zA-Z_0-9\'\\s]', ""), "\\s+")
from t_wc;
-- 使用expload函数进行炸裂
select explode(split(regexp_replace(line, '[^a-zA-Z_0-9\'\\s]', ""), "\\s+")) as word
from t_wc;
-- 分组得到每个单词的次数
with t1 as (select explode(split(regexp_replace(line, '[^a-zA-Z_0-9\'\\s]', ""), "\\s+")) as word from t_wc)
select word, count(1) as word_count
from t1
group by word;

 

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

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

相关文章

Request响应和Response对象

什么是Request响应和Response对象 实际上就是指Request对象和Response对象。 一个get或者post请求实际上就是一些有规律的字符串,Tomcat将这些字符串获取并且封装成一个可操作的对象。 通过Response对象可以设置响应数据,也就是Tomcat想要给浏览器发送…

Redis安全性详解

目录 ​编辑 Redis安全性详解 1.Redis的访问控制措施。 2.Redis的密码认证机制 3.Redis的绑定IP地址 4.Redis的网络ACL 5.Redis的防火墙或网络安全组 Redis安全性详解 Redis是一个快速、开源的内存数据库,被广泛用于缓存、消息传递和数据存储等场景。然而&a…

sql查询每组数据中时间最大的一条

sql查询每组数据中时间最大的一条 前言代码总结 前言 先来了解一下业务需求。博主好久没写过后端了,这一写就直接碰到我知识盲区了 我们简单还原一下,这里使用一个表模拟下 表的字段如下 表的内容如下,我们的需求就是取出相同name的数据中…

五、AOP(1)

一、AOP基本概念 1.什么是AOP 面向切面编程(方面),利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。不通过修改源代码方式添…

章节1:Burp Suite基本介绍

章节1:Burp Suite基本介绍 Burp [bɜ:p] Suite [swiːt] 01 Burp Suite基本介绍 官网介绍 https://portswigger.net/ 主要产品 Burp Suite培训和认证(Academy)研究院(Research)日报(Daily)…

win10下annoconda安装及更改镜像源,加速软件下载速度

1 annoconda下载 文件地址,选择版本下载https://repo.anaconda.com/archive/ 如下在win10版本: https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Windows-x86_64.exe 完成后根据向导安装。 2 清空镜像源,回到初始状态…

QT之动态加载下拉框(QComboBox)

QT之动态加载下拉框(QComboBox) 简介效果原理分析实现 简介 这两天遇到一个需求,需要下拉选项中动态加载一些数据,实现之后感觉挺有意思,特此记录一下。 效果 还是先看下效果,源码也放在文末了 原理分…

图形学中的抗锯齿讨论以及在unity中的应用

抗锯齿(Anti-Aliasing)是图形学中,很重要的一个部分。本文旨在做一些分析总结,并对平时不理解的细节,做了调研总结,但毕竟不是做GPU行家,所以有不对的地方,欢迎拍砖^^。 1 什么是锯齿 下图,是…

Linux 防火墙 Firewalld

firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。 firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规…

《C++primer》5~6章总结

《CPrimer》 语句函数 语句 if else 就C而言,规定else与离它最近的尚未匹配的if匹配,从而消除程序的二义性,所以最好的处理方法就是养成习惯在if else 后面加一个花括号swirch搭配case关键字使用,case关键字和它对应的值一起被称…

PCB~地平面

地平面的特征 • 在同一块板子上,无线数字信号经常会有较高的数字逻辑,例如高增益的RF电路 • 屏蔽和接地对于接收端的设计是非常有效的 – 辐射在源端就应该被屏蔽掉 – 地平面电流应该回到源端 – 电源电流会通过最小电阻和电感路径回到源端 • 至少有…

Git的项目管理工具的使用

Git的项目管理工具的使用 为什么学习Git软件? 主流开发中,基于互联网的开发项目都会使用git进行资源管理 资源管理:人力资源 ​ 代码资源 : .java .c . js 等 ​ 文档资源 : doc.md ,pdf 等 git是最常用的scm软件(Soft…

Vivado综合属性系列之九 CLOCK_BUFFER_TYPE

目录 一、前言 二、CLOCK_BUFFER_TYPE ​ ​2.1 属性说明 ​ ​2.2 工程代码 ​ ​2.3 结果 一、前言 ​ ​在设计中,对于时钟端口驱动时钟单元时,工具会自动综合出全局时钟BUFG连接时钟源和时钟负载。当存在全局时钟BUFG不足或者因为某些…

3512. 最短距离总和

Powered by:NEFU AB-IN Link 文章目录 3512. 最短距离总和题意思路代码 3512. 最短距离总和 题意 给定一张带权无向完全图,设点的编号为 1,2,3,4,5…n(以邻接矩阵的形式给出)。 计算依次拿走第 i个点后,剩余所有点到其他点的最短…

从零开始Vue3+Element Plus后台管理系统(十二)——封装Axios,取消重复请求

在过往的项目中,大部分Axios在项目搭建时就直接二次封装好了,拿来即用。满足通用需求是没有问题的,但碰到一些特别的接口返回,弱网场景,特别的产品需求,就觉得简单的封装不够用了。 实际上Axios非常强大&a…

在Windows上安装Docker与k8s,完美亲测!

一、软件准备 1、去Docker官网下载Docker Desktop,并一键安装 2、下载k8s-for-docker-desktop包 git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git二、镜像源配置 配置docker的国内镜像,国外的网络下载可能比较慢 { …

在线考试系统设计

一.项目概述 使⽤⽬前较为流⾏的技术栈开发的⼀款界⾯设计友好、部署操作简单、代码层次结构清晰、⼆次开发上⼿便捷的在线考试平台。系统分为管理端和考⽣端,管理端集成了用户管理、⻆⾊管理、部⻔管理、菜单管理、数据字典、系统⽇志、定时任务、中间件…

软件设计师 试题三

问题一:补充用例图,他就是参与者(左边文章里的)与用例(用户的行为)之间的关系,比如用户执行某些事情 一个句号一个功能 。找参与者做的事行为 。或者就是根据参与者对面提供的信息去文中找相关…

【Linux初阶】进程替换的应用 - 简易命令行解释器的实现

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:使用代码手段实现一个简易的命令行解释器,其中功能包括:打印输出提示符、获取用户输入…

实验11 人工神经网络(2)

1. 实验目的 ①掌握梯度下降法的优化算法; ②能够使用tf.keras构建Sequential模型,完成多分类任务。 2. 实验内容 ①下载MNIST数据集,建立神经网络模型,实现对MNIST手写数字数据集的识别,调整超参数和训练参数&…