当前位置: 首页 > news >正文

高级SQL技巧详解与实例

在数据处理与分析领域,高级SQL技巧是提升效率与准确性的关键。本文将结合参考资料,对高级SQL技巧进行系统的整理与解读,并通过实例展示其应用。

一、窗口函数

窗口函数是一种在SQL中执行复杂计算的强大工具,它们允许用户在一组行(称为窗口)上执行计算,而不会将这些行合并成单个结果行。窗口函数在处理排名、累计和运行总和等场景中非常有用。

基本语法

<窗口函数> OVER([PARTITION BY <分区列>][ORDER BY <排序列>])

常见窗口函数

  1. ROW_NUMBER():为每一行分配一个唯一的序号。
  2. RANK():为每一行分配一个序号,但序号间可能有跳跃(如有两行数据相同,则它们共享同一序号,下一行的序号将跳过)。
  3. DENSE_RANK():为每一行分配一个序号,序号间无跳跃(即使两行数据相同,也会为下一行分配连续的序号)。
  4. LEAD()LAG():用于访问同一窗口中前一行或后一行的数据。

实例

SELECT employee_id, department_id, salary,ROW_NUMBER() OVER(PARTITION BY department_id ORDER BY salary DESC) AS row_num,RANK() OVER(PARTITION BY department_id ORDER BY salary DESC) AS rank,DENSE_RANK() OVER(PARTITION BY department_id ORDER BY salary DESC) AS dense_rank,LAG(salary, 1) OVER(PARTITION BY department_id ORDER BY salary DESC) AS previous_salary
FROM employees;
二、递归查询

递归查询允许用户在一个查询中多次引用同一个表,这在处理树形结构数据(如组织架构、目录结构)时非常有用。

基本语法

WITH RECURSIVE cte_name AS (初始查询UNION ALL递归查询
)
SELECT * FROM cte_name;

实例

WITH RECURSIVE EmployeeCTE AS (SELECT employee_id, manager_id, 1 AS levelFROM employeesWHERE manager_id IS NULLUNION ALLSELECT e.employee_id, e.manager_id, ecte.level + 1FROM employees eINNER JOIN EmployeeCTE ecte ON e.manager_id = ecte.employee_id
)
SELECT employee_id, employee_name, level
FROM EmployeeCTE
ORDER BY level, employee_id;
三、公共表表达式(CTEs)

CTE是一种临时的结果集,只在单个查询的执行周期内有效。它有助于使复杂查询更加易读和易维护。

基本语法

WITH cte_name AS (查询语句
)
SELECT * FROM cte_name;

实例

WITH SalesCTE AS (SELECT employee_id, SUM(amount) AS total_salesFROM salesGROUP BY employee_id
)
SELECT employee_id, total_sales
FROM SalesCTE
WHERE total_sales > 10000;
四、子查询

子查询是嵌套在另一个查询中的查询,常用于筛选条件和数据过滤。

实例

SELECT employee_id, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
五、集合操作

集合操作允许用户将两个或多个查询结果集进行合并或比较。常见的集合操作符包括UNION、INTERSECT和EXCEPT。

实例

-- 合并两个查询结果集
SELECT name FROM customers
UNION
SELECT name FROM suppliers;-- 找出两个查询结果集的交集
SELECT name FROM customers
INTERSECT
SELECT name FROM suppliers;-- 找出只在第一个查询结果集中存在的记录
SELECT name FROM customers
EXCEPT
SELECT name FROM suppliers;
六、其他高级技巧
  1. 临时函数:在支持的数据库中(如PostgreSQL),可以定义临时函数来封装复杂的逻辑,增强代码重用性。
  2. 日期时间操作:包括日期加减、日期格式转换等。
  3. 索引优化:创建适当的索引可以显著提高查询性能。
  4. 自联结:一个表与自身进行联结,常用于处理相对数据。
  5. 分页:使用LIMIT子句进行分页查询,减少大偏移量

相关文章:

高级SQL技巧详解与实例

在数据处理与分析领域&#xff0c;高级SQL技巧是提升效率与准确性的关键。本文将结合参考资料&#xff0c;对高级SQL技巧进行系统的整理与解读&#xff0c;并通过实例展示其应用。 一、窗口函数 窗口函数是一种在SQL中执行复杂计算的强大工具&#xff0c;它们允许用户在一组行…...

实现PC端和安卓手机的局域网内文件共享

文章目录 一、准备工作1.1 笔记本(Win10)的设置&#xff08;主要可分为3大部分&#xff1a;更改共享设置、创建本地用户、选择共享文件&#xff09;1.2 台式机(Win7)的设置 二、实现共享文件夹的访问2.1 笔记本(Win10)访问台式机(Win7)2.2 台式机(Win7)访问笔记本(Win10)(一定要…...

腾讯云云开发深度解读:云数据库、云模板与AI生成引用的魅力

腾讯云云开发平台为开发者和潜在用户提供了丰富的解决方案&#xff0c;其中的云数据库、云模板和AI生成引用等产品尤为引人注目。这篇文件是我个人对这些产品的能力、应用场景、业务价值、技术原理的介绍和深度解读&#xff0c;最后也简单写一下新手如何进行相关产品的初步使用…...

预览 PDF 文档

引言 在现代Web应用中&#xff0c;文件预览功能是非常常见的需求之一。特别是在企业级应用中&#xff0c;用户经常需要查看各种类型的文件&#xff0c;如 PDF、Word、Excel 等。本文将详细介绍如何在Vue项目中实现 PDF 文档的预览功能。 实现原理 后端API 后端需要提供一个…...

Chromium 在WebContents中添加自定义数据c++

为了能在WebContents中添加自定义数据先看下几个关键类的介绍。 一、WebContents 介绍&#xff1a; WebContents是content模块核心&#xff0c;是呈现 Web 内容&#xff08;通常为 HTML&#xff09;位于矩形区域中。 最直观的是一个浏览器标签对应一个WebContents&#xff0c…...

【Apache Zookeeper】

一、简介 1、场景 如何让⼀个应⽤中多个独⽴的程序协同⼯作是⼀件⾮常困难的事情。开发这样的应⽤&#xff0c;很容易让很多开发⼈员陷⼊如何使多个程序协同⼯作的逻辑中&#xff0c;最后导致没有时间更好地思考和实现他们⾃⼰的应⽤程序逻辑&#xff1b;又或者开发⼈员对协同…...

13.音乐管理系统(基于SpringBoot + Vue)

目录 1.系统的受众说明 ​​​​​​​ 2 需求分析 2.1用例图及用例分析 2.1.1 用户用例图及用例分析 2.1.2 管理员用例图及用例分析 2.2 系统结构图和流程图 2.2.1 音乐播放器的系统流程图&#xff08;图2.2.1-1&#xff09; 2.2.2 系统功能表&#xff08;表2.2.2…...

如何从iconfont中获取字体图标并应用到微信小程序中去?

下面我们一一个微信小程序的登录界面的制作为例来说明&#xff0c;如何从iconfont中获取字体图标是如何应用到微信小程序中去的。首先我们看效果。 这里所有的图标&#xff0c;都是从iconfont中以字体的形式来加载的&#xff0c;也就是说&#xff0c;我们自始至终没有使用一张…...

C语言中的位操作

第一章 变量某位赋值与连续赋值 寄存器 | 值 //例如&#xff1a;a 1000 0011b a | (1<<2) //a 1000 0111 b 单独赋值 a | (3<<2*2) // 1011 0011b 连续赋值 第二章 变量某位清零与连续清零 寄存器 & ~&#xff08;&#xff09; 值 //例子&#xff1a;a …...

Spring之HTTP客户端--RestTemplate的使用

原文网址&#xff1a;Spring之HTTP客户端--RestTemplate的使用_IT利刃出鞘的博客-CSDN博客 简介 本文介绍RestTemplate的用法。RestTemplate是Spring自带的HTTP客户端&#xff0c;推荐使用。 项目中经常需要使用http调用第三方的服务&#xff0c;常用的客户端如下&#xff1…...

vscode和pycharm在当前工作目录的不同|python获取当前文件目录和当前工作目录

问题背景 相信大家都遇到过一个问题&#xff1a;一个项目在vscode&#xff08;或pycharm&#xff09;明明可以正常运行&#xff0c;但当在pycharm&#xff08;或vscode&#xff09;中时&#xff0c;却经常会出现路径错误。起初&#xff0c;对于这个问题&#xff0c;我也是一知…...

速盾:海外高防CDN有哪些优势?

海外高防CDN&#xff08;Content Delivery Network&#xff09;是一种通过部署分布式节点服务器来加速网站内容分发的技术&#xff0c;它能够提供更快速、稳定、安全的网站访问体验。相比于传统的CDN服务&#xff0c;海外高防CDN具有以下几个优势&#xff1a; 全球分布&#xf…...

OpenCV视觉分析之目标跟踪(4)目标跟踪类TrackerDaSiamRPN的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::TrackerDaSiamRPN 是 OpenCV 中用于目标跟踪的一个类&#xff0c;它实现了 DaSiam RPN&#xff08;Deformable Siamese Region Proposal Net…...

自动对焦爬山算法原理

自动对焦爬山算法原理可以归纳为以下几个关键步骤&#xff1a; &#xff08;1&#xff09;初始化&#xff1a; 爬山算法从一个随机或预设的初始位置开始&#xff0c;这个位置代表了镜头的初始焦距。 &#xff08;2&#xff09;清晰度评价&#xff1a; 算法首先在当前焦距下捕…...

Hyperledger Fabric有那些核心技术,和其他区块链对比Hyperledger Fabric有那些优势

Hyperledger Fabric是一个模块化、权限化的企业级区块链平台&#xff0c;与比特币、以太坊等公有链相比&#xff0c;Fabric主要为私有链或联盟链设计&#xff0c;适用于企业应用。它包含多项核心技术&#xff0c;使其在企业级区块链应用中具有独特优势。以下是Fabric的核心技术…...

「Mac畅玩鸿蒙与硬件8」鸿蒙开发环境配置篇8 - 应用依赖与资源管理

本篇将介绍如何在 HarmonyOS 项目中高效管理资源文件和依赖&#xff0c;以确保代码结构清晰并提升应用性能。资源管理涉及图片、字符串、多语言文件等&#xff0c;通过优化文件加载和依赖管理&#xff0c;可以显著提升项目的加载速度和运行效率。 关键词 资源管理应用依赖优化…...

【Gorm】传统sql的增删查改,通过go去操作sql

MySQL中的建库&#xff0c;建表&#xff0c;删库&#xff0c;删表&#xff0c;添加记录&#xff0c;查询&#xff0c;删除记录&#xff0c;更新记录这些命令是一定要回的&#xff0c;就算我们脱离 orm 这些&#xff0c;也能直接连接上数据库进行操作。 一、数据库的操作 # 查…...

HTML小阶段二维表和思维导图

下面是对标签、元素、属性的对比二维表&#xff0c;通过对比3w1h&#xff08;what是什么、where用在哪、why为什么要用、how如何用&#xff09;来学习区分学习标签、元素、属性 标签 元素 属性 what &#xff08;Tags&#xff09;标签是用来标记内容块或标明元素内容意义 …...

AI与低代码的碰撞:企业数字化转型的新引擎

引言 在当今的商业环境中&#xff0c;企业数字化转型已从选择题变成了必答题。面对日益复杂的市场竞争和不断变化的客户需求&#xff0c;传统的开发模式常常显得力不从心——开发周期冗长、技术门槛高、成本居高不下&#xff0c;企业很难快速响应市场变化。而在这种背景下&…...

HarmonyOS应用开发者基础认证——初级闯关习题参考答案大全

相关文章 HarmonyOS应用开发者中级认证——中级闯关习题参考答案大全 HarmonyOS应用开发者高级认证——高级闯关习题参考答案大全 文章目录 HarmonyOS第一课 HarmonyOS介绍判断题单选题多选题 HarmonyOS第一课 DevEco Studio的使用判断题单选题多选题 HarmonyOS第一课 ArkTS语法…...

Vue背景图片自适应大屏与小屏

1&#xff0c;父绝子相 效果是台式看的更多&#xff0c;笔记本看部分。但是图片不会变形 <div class"father" style"width:100%; position:relative"> <img src"test.png" class"son" style"width:1920px; position:a…...

MongoDB 8.0.3版本安装教程

MongoDB 8.0.3版本安装教程 一、下载安装 1.进入官网 2.选择社区版 3.点击下载 4.下载完成后点击安装 5.同意协议&#xff0c;下一步 6.选择第二个Custon&#xff0c;自定义安装 7.选择安装路径 &#xff01;记住安装路径 8.默认&#xff0c;下一步 9.取…...

【C语言】预处理(预编译)详解(下)(C语言最终篇)

文章目录 一、#和##1.#运算符2.##运算符 二、预处理指令#undef三、条件编译1.单分支条件编译2.多分支条件编译3.判断符号是否被定义4.判断符号是否没有被定义 四、头文件的包含1.库头文件的包含2.本地头文件的包含3.嵌套包含头文件的解决方法使用条件编译指令使用预处理指令#pr…...

[Linux] linux 软硬链接与动静态库

标题&#xff1a;[Linux] linux 软硬链接与动静态库 个人主页水墨不写bug &#xff08;图片来源于网络&#xff09; /** _oo0oo_* o8888888o* 88" . "88* (| -_- |)* …...

GitHub Actions的 CI/CD

GitHub Actions 是一个强大的 CI/CD 工具&#xff0c;适用于自动化各种开发任务。GitHub Actions 的原理是基于事件驱动的自动化流水线工具&#xff0c;通过定义触发条件和执行步骤&#xff0c;可以让项目在特定条件下自动运行一系列操作&#xff0c;比如构建、测试、部署等。 …...

doris 表结构批量导出

导出 test 数据库中的 table1 表&#xff1a;mysqldump -h127.0.0.1 -P9030 -uroot --no-tablespaces --databases test --tables table1 导出 test 数据库中的 table1 表结构&#xff1a;mysqldump -h127.0.0.1 -P9030 -uroot --no-tablespaces --databases test --tables tab…...

linux查看文件命令

查看文件命令 显示命令 cat 语法&#xff1a;cat 【选项】 文件 选项 命令含义n显示行号包括空行b显示行号不包括空行s压缩空行为一行A显示隐藏字符 cat -n 文件&#xff1a;显示行号包括空行 cat -b 文件 cat -s 文件 cat -A 文件 more和less是 分页查看 tac和rev都…...

【2023工业图像异常检测文献】DiAD: 基于扩散模型的多类异常检测方法

DiAD: A Diffusion-based Framework for Multi-class Anomaly Detection 1、Background 当前主流的三种异常检测方法&#xff1a; 基于合成的方法&#xff1a;在正常图像上合成异常&#xff0c;通过训练模型识别这些合成的异常来提高检测和定位能力。基于嵌入的方法&#xff…...

三相继电保护机 继电器保护校验仪 微机继电保护测试仪

性能特点 电压电流输出灵活组合 输出达4相电压3相电流&#xff0c;可各种组合实现常规4相电压3相电流型输出模式&#xff0c;既可兼容传统的各种试验方式&#xff0c;也可方便地进行三相变压器差动试验和厂用电快切和备自投试验。 操作方式装置直接外接笔记本电脑或台式机进行…...

MyEclipse中讲解Git使用——结合GitLab

1、什么是Git Git是分布式版本控制系统 Git是一款免费、开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。 2、在myeclipse安装Git插件 下载该文件&#xff0c;将egit.zip解压放入 myeclipse安装路径>dropins>下重新启动myeclipse EGit -…...

一个网站怎么做软件好用吗/bt磁力狗

环境搭建 搭建一个jQuery的开发环境非常方便&#xff0c;可以通过下列几个步骤进行。 下载jQuery文件库在jQuery的官方网站&#xff08;http://jquery.com&#xff09;中&#xff0c;下载最新版本的jQuery文件库。在网站中找到最新版本文件的下载按钮&#xff0c;将jQuery框架文…...

wordpress会员制订阅/广告网站策划方案

三种事件绑定方法总结1、多种事件绑定方式汇总2、源代码1、多种事件绑定方式汇总 组件对象的绑定 通过 command 属性绑定&#xff08;适合简单不需获取 event 对象&#xff09;Button(window, text "login", command login)通过 bind 方法绑定&#xff08;适合需…...

网站主题 模板/下载百度安装

最近做了个项目&#xff0c;该项目可以方便查询全国地铁线路&#xff0c;地铁线路上模拟小车到站提醒&#xff0c;点击小车可触发相关事件&#xff0c;使用的有 百度地图查询地铁线路 &#xff0c;地铁图api&#xff0c;再结合vue-baidu-map 1.判断地铁线路图加载完成 //会有…...

手机定制网站/百度信息流平台

watchEffect函数的作用&#xff1a; 传入的一个函数&#xff0c;当依赖项变化的时候&#xff0c;重新执行改函数。 watchEffect函特性&#xff1a; 与watch相似都可以监听一个数据源。 但是watchEffect会在初始化的时候调用一次&#xff0c;与watch的immediate类似。 watch…...

wordpress集成文库插件/seo优化包括哪些

一、学生背景学生姓名 &#xff1a; 韦同学成绩概况 &#xff1a; 绩点 2.7所学专业 &#xff1a; Computer science就读学校 &#xff1a; 明尼苏达录取专业 &#xff1a; informationtechnology留学层级 &#xff1a; 硕士录取结果 &#xff1a; 悉尼大学*二、申请诊断分析优…...

网站整体结构/深圳英文网站推广

AspAccess的程序在NTFS分区上常常出现这样那样的问题&#xff0c;这切都是安全权限惹的祸&#xff0c;所以要想正常调试一个网站还需要更详细的设置。1.安装IIS7右单击的桌面上的[计算机]》选择[管理]扩展[角色]展卷栏》单击[添加角色]》在[添加角色向导]对话框中选择[Web服务器…...