经典sql题(十四)炸裂函数的恢复
下面是一个关于 SELECT 语句的例子,该示例展示了如何使用 CONCAT_WS 和 COLLECT_LIST 函数来处理炸裂之后学生成绩的数据。假设我们有一个名为 test 的表,结构如下:
表结构 test
| student_id | student_name | class | score |
|---|---|---|---|
| 1 | Alice | Class1 | 90 |
| 1 | Alice | Class1 | 85 |
| 1 | Alice | Class1 | 80 |
| 2 | Bob | Class2 | 75 |
| 2 | Bob | Class2 | 80 |
SQL 查询示例
下面的 SQL 查询将使用 CONCAT_WS 和 COLLECT_LIST 函数来合并数据:
SELECT student_id, student_name, CONCAT_WS(',', COLLECT_LIST(score)) AS scores,CONCAT_WS(' ', class) AS classes
FROM test
GROUP BY student_id, student_name;
查询结果
| student_id | student_name | scores | classes |
|---|---|---|---|
| 1 | Alice | 90,85,80 | Class1 |
| 2 | Bob | 75,80 | Class2 |
说明
-
CONCAT_WS: 在这里我们使用
CONCAT_WS来将scores列中的分数合并为一个以逗号分隔的字符串。COLLECT_LIST(score)将所有分数作为列表收集。 -
GROUP BY: 使用
GROUP BY子句按照student_id和student_name进行分组,这样可以将每个学生的分数合并到一行中。 -
classes: 由于每个学生的班级是相同的,因此可以简单地用
CONCAT_WS将班级信息合并。
下文将详细介绍 SQL 中的 CONCAT、CONCAT_WS、COLLECT_LIST 和 COLLECT_SET 函数,以及它们在实际应用中的区别和用法。
1. 数据合并函数对比
1.1 CONCAT
- 功能: 用于将多个字符串连接成一个字符串。
- 用法: 只支持字符串类型的输入。
示例:
SELECT CONCAT('A', 'B', 'C') AS result;
-- 输出 'ABC'
1.2 CONCAT_WS
- 功能: 用于将多个字符串连接成一个字符串,但可以指定分隔符。
- 用法: 接收一个分隔符作为第一个参数,后续参数为要连接的字符串。
- 注意: 仅适用于字符串类型。
示例:
SELECT CONCAT_WS(',', 'A', 'B', 'C') AS result;
-- 输出 'A,B,C'
1.3 COLLECT_LIST
- 功能: 将多行数据合并为一个数组,保留重复值。
- 用法: 常用于分组查询中。
示例:
SELECT student_id, COLLECT_LIST(score) AS scores
FROM student_scores
GROUP BY student_id;
结果:
| student_id | scores |
|---|---|
| 1 | [90, 85, 80] |
| 2 | [75, 80] |
1.4 COLLECT_SET
- 功能: 将多行数据合并为一个集合,去重。
- 用法: 仅保留唯一值,消除重复元素。
示例:
SELECT student_id, COLLECT_SET(score) AS scores
FROM student_scores
GROUP BY student_id;
结果:
| student_id | scores |
|---|---|
| 1 | [90, 85, 80] |
| 2 | [75, 80] |
2. 主要区别总结
CONCAT vs CONCAT_WS:
- CONCAT: 直接将字符串连接,不支持分隔符。
- CONCAT_WS: 允许指定分隔符,使合并结果更具可读性。
COLLECT_LIST vs COLLECT_SET:
- COLLECT_LIST: 会保留重复值,适用于需要保留所有数据的场景。
- COLLECT_SET: 去重,只保留唯一值,适用于需要消除重复项的场合。
数据类型:
- CONCAT 和 CONCAT_WS: 仅适用于字符串类型。
- COLLECT_LIST 和 COLLECT_SET: 可用于任何数据类型。
3. 适用场景
- 使用 CONCAT: 当你需要简单字符串连接而不需要分隔符时。
- 使用 CONCAT_WS: 当你需要在连接字符串时加入特定分隔符以提高可读性时。
- 使用 COLLECT_LIST: 当你需要合并多行数据并保留所有值(包括重复值)时。
- 使用 COLLECT_SET: 当你需要合并多行数据并确保结果中只有唯一值时。
相关文章:
经典sql题(十四)炸裂函数的恢复
下面是一个关于 SELECT 语句的例子,该示例展示了如何使用 CONCAT_WS 和 COLLECT_LIST 函数来处理炸裂之后学生成绩的数据。假设我们有一个名为 test 的表,结构如下: 表结构 test student_idstudent_nameclassscore1AliceClass1901AliceClas…...
【vue2】组件写法
组件基本骨架 <template><div class"my-component"><!-- 组件的 HTML 结构 --><h1>{{ title }}</h1><!-- 事件绑定 --><button click"handleClick">点击我</button><!-- 输入框与双向数据绑定 -->…...
5G 扬帆新质跃,技术蝶变开新篇-第七届“绽放杯”5G应用征集大赛 5G应用融合技术专题赛圆满收官
2024年9月13日,由中国信息通信研究院、中国电信集团有限公司、中国移动通信集团有限公司、中国联合网络通信集团有限公司主办,5G应用产业方阵承办的第七届“绽放杯”5G应用征集大赛 5G应用融合技术专题赛决赛在深圳成功举办。 本次专题赛以“5G扬帆新质跃,技术蝶变开新篇”为…...
3d gaussian splatting公式推导
1. 离散公式推导 nerf中连续的积分渲染公式是: 其中被遮挡率: 那么转换为离散公式后有: 其中,代表j时刻的时间差,将其带入渲染公式: 设透明度 则被遮挡率 有 而gaussian-splating的公式与ner…...
金属增材制造咋突破?纳米纹理粉末如何助力金属增材制造?
大家好,今天我们来了解一篇金属增材制造文章——《High absorptivity nanotextured powders for additive manufacturing》发表于《Science Advances》。金属增材制造在医疗、航空航天等领域,它潜力巨大,但目前可打印的金属材料有限ÿ…...
openpnp - 为了防止物料操作混乱,做一张物料分布位置图清晰一些
文章目录 openpnp - 为了防止物料操作混乱,做一张物料分布位置图清晰一些概述笔记做子装配图做总装配图备注END openpnp - 为了防止物料操作混乱,做一张物料分布位置图清晰一些 概述 看网上资料,当openpnp贴片机上料后,为了防止…...
懒人帮美食系统小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,商家管理,配送员管理,菜品分类管理,菜品信息管理,订单信息管理,订单配送管理 微信端账号功能包括:系统首页…...
David律所代理Jose Martin幽默水果版权首发维权,尚未TRO
案件基本情况:起诉时间:2024/9/18案件号:2024-cv-08484原告:Jose Martin原告律所:David起诉地:伊利诺伊州北部法院涉案商标/版权:原告品牌简介:西班牙的卓越艺术家Jose Martin以他非…...
读构建可扩展分布式系统:方法与实践15可扩展系统的基本要素
1. 可扩展系统的基本要素 1.1. 分布式系统在本质上就是复杂的,你必须考虑多种故障模式,并设计应对所有可能发生的情况的处理方式 1.2. 大规模应用程序需要协调大量的硬件和软件组件,共同实现低延迟和高吞吐量的能力 1.3. 面临的挑战是将所…...
解决VisualStudio msvsmon.exe远程调试器未启动问题
原本好好的用本地调试器编译运行程序,结果VisualStudio不知道哪根筋抽风了,死活就是无法运行程序。 心想是不是程序问题,结果直接运行程序没问题。 心想是不是msvsmon.exe是个后台服务,结果死活找不到这个服务,然后再…...
如果淘汰是注定的,那么读书还有意义吗?
哪吒说:“我命由我不由天,是魔是仙我自己说了算。”; 而且书中自有颜如玉,书中自有黄金屋; 抛开以上说法,有一句话说的也特别好:“人这一辈子,赚不到自己认知以外的钱,没…...
Python 中 三种常用的绘图方式 ! ! !
一 Matplotlib可视化 在Python中,Matplotlib是一个功能强大的绘图库,特别是其Pyplot模块,提供了类似于MATLAB的绘图接口,使得用户可以轻松绘制各种2D图表。下面我们将详细介绍使用Matplotlib进行可视化的基本步骤以及常用图形的…...
统一回复OneAPI:failed to get gpt-3.5-turbo token encoder的解决办法
源码方式安装后启动OneAPI时提示failed to get gpt-3.5-turbo token encode,缺少编码文件的解决办法。 1、编辑encoding.go文件 vim /root/go/pkg/mod/github.com/pkoukk/tiktoken-gov0.1.7/encoding.go 注意:tiktoken-gov0.1.7要根据实际情况&#x…...
Flash Attention是怎么做到又快又省显存的?
Flash Attention 并没有减少 Attention 的计算量,也不影响精度,但是却比标准的Attention运算快 2~4 倍的运行速度,减少了 5~20 倍的内存使用量。究竟是怎么实现的呢? Attention 为什么慢? 此处的“快慢”是相对而言的…...
CAN报文ID过滤
在CAN通信中,CAN_FILTERMODE_LIST和CAN_FILTERMODE_MASK是用于CAN过滤器配置的两种不同过滤模式。 1. CAN_FILTERMODE_LIST: - 当CAN过滤器使用CAN_FILTERMODE_LIST模式时,过滤器将匹配通过滤器的标识符列表中的任何一个标识符。换句话说…...
ELK-05-skywalking监控SpringCloud服务日志
文章目录 前言一、引入依赖二、增加日志配置文件三、打印日志四、skywalking网页查询链路五、日志收集5.1 修改logback-spring.xml5.2 重启SpringCloud服务并请求test接口5.3 查看skywalking网页的Log 总结 前言 基于上一章节,现在使用skywalkin监控SpringCloud服务…...
17年数据结构考研真题解析
第一题: 解析: 我们说递归要找出口,这道题的出口是sum<n,经过观察可以得知:sum123。。。k 设第k次循环跳出,则有sum123。。。k<n k<,很显然答案选B 第二题: 解析: 第一句&a…...
nginx 安装(Centos)
nginx 安装-适用于 Centos 7.x [rootiZhp35weqb4z7gvuh357fbZ ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.9.2009 (Core) Release: 7.9.2009 Codename: Core# 创建文件…...
异步编程利器:深入解析 Python 异步并发库 Gevent
在现代 Python 应用开发中,并发编程 是提高程序性能、处理多个任务的关键手段之一。虽然 Python 有原生的多线程、多进程模块,但这些模块存在一些限制,比如全局解释器锁(GIL)会影响多线程程序的执行效率。此外…...
Python pyusb 使用指南【windows+linux】
前言:USB(通用串行总线)作为一种高度通用性的硬件接口,在诸多领域均有应用。在C中可以直接使用libusb库即可完成USB设备信息查询、USB设备监听、与USB设备控制端点、数据(同步、批量、中断)端点进行指令、数据交互等功能。python中…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
