经典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中…...
全能视频下载工具:Video-Downloader让在线视频轻松保存
全能视频下载工具:Video-Downloader让在线视频轻松保存 【免费下载链接】Video-Downloader 下载youku,letv,sohu,tudou,bilibili,acfun,iqiyi等网站分段视频文件,提供mac&win独立App。 项目地址: https://gitcode.com/gh_mirrors/vi/Video-Downloa…...
Wan2.2-I2V-A14B镜像免配置:SSH直连后cd /workspace即可执行全部命令
Wan2.2-I2V-A14B镜像免配置:SSH直连后cd /workspace即可执行全部命令 1. 镜像概述与核心优势 Wan2.2-I2V-A14B私有部署镜像是一款专为文生视频模型定制的开箱即用解决方案。这个镜像最大的特点就是"免配置"——通过SSH连接后,只需进入/works…...
OpenRocket:革新性全流程火箭设计的开源技术突破实践
OpenRocket:革新性全流程火箭设计的开源技术突破实践 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket OpenRocket作为一款基于Java开发的开源火…...
微信小程序物流信息对接实战:发货接口的完整实现指南
1. 微信小程序物流对接的核心价值 对于电商类小程序来说,物流信息同步是用户体验的关键环节。当用户下单后,最关心的就是"我的包裹到哪了"。传统做法需要用户手动复制单号到第三方平台查询,而通过微信官方物流接口,可以…...
驱动残留清理技术解析:Display Driver Uninstaller实战指南
驱动残留清理技术解析:Display Driver Uninstaller实战指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninsta…...
PyTorch 3.0静训性能断崖预警:当AllReduce延迟>8.3ms或图编译耗时>117s时,你的训练任务已在 silently fail——附实时诊断CLI工具
第一章:PyTorch 3.0静态图分布式训练的静默失效危机全景PyTorch 3.0 引入的 TorchScript 静态图编译机制与 torch.distributed 的深度耦合,在多节点多卡场景下暴露出一类高危静默失效现象:训练进程持续运行、梯度同步无报错、loss 曲线看似收…...
noice.nvim终极性能优化指南:让你的Neovim编辑器运行如飞
noice.nvim终极性能优化指南:让你的Neovim编辑器运行如飞 【免费下载链接】noice.nvim 💥 Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu. 项目地址: https://gitcode.com/gh_mirrors/no/noic…...
3步告别桌面混乱:开源免费的NoFences桌面分区管理工具
3步告别桌面混乱:开源免费的NoFences桌面分区管理工具 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天都要在杂乱无章的桌面图标中浪费宝贵时间&#x…...
35AE92 GJR5137200R0005电子模块
35AE92 GJR5137200R0005 电子模块是一款工业控制系统用的电子控制模块,通常用于西门子或ABB等自动化设备中,承担信号处理、控制逻辑执行及系统接口功能。开头:35AE92 GJR5137200R0005电子模块是工业自动化控制系统的重要组成部分,…...
Qwen3-TTS快速部署教程:一键启动Web服务,3分钟开始声音克隆
Qwen3-TTS快速部署教程:一键启动Web服务,3分钟开始声音克隆 1. 为什么选择Qwen3-TTS进行语音克隆 想象一下这样的场景:你需要为海外客户录制多语言产品介绍,但雇佣专业配音演员成本高昂;或者想为自己的视频内容添加个…...
