sqlserver 联表查询、子查询、窗口函数、聚合函数等概念与例子

2023-11-16

with cte as的用法

查询的一个有用工具,允许创建临时命名结果集,可在查询中多次引用相同的子查询结果,可以提高查询的可读性和维护性

WITH cte_name (column1, column2, ...) AS (
    -- 这里是子查询
    SELECT column1, column2, ...
    FROM your_table
    WHERE some_condition
)
-- 主查询
SELECT *
FROM cte_name;

子查询

  • 标量子查询:返回单个值,通常用于比较运算符中,他们嵌套在主查询的条件中
-- 查找所有工资高于公司平均工资的员工
SELECT employee_name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

  • 行子查询: 返回单行多列,通常将子查询的结果集整行引入主查询中
  • 列子查询:返回单列多行,通常将子查询结果集作为一个值列表传递给主查询。
  • 表子查询:多表联查

窗口函数

rank over (partition by order_code order by dd desc)
partition by 指定分区的表达式,如果不指定,整个结果集将作为一个分区,指定分区将使排名在每个分区内单独计算
注意:rank()函数可能导致排名值不连续,多个行具有相同的值,将共享相同的排名,使用dense_rank()可去重

窗口函数原理

在不破坏原始数据行的情况下对每一行进行聚合或分析
排序(order by)、分组(partition by)、计算(针对分组内数据行,而不是整个结果集)、结果(窗口函数的结果值附加到每一行,意味着每个数据行都有一个关联的窗口函数结果)

常用聚合函数

sum、arg等

窗口函数分类

排名函数
SELECT employee_name, salary, RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS ranking
FROM employees;

累积函数
SELECT order_date, order_amount, SUM(order_amount) OVER (ORDER BY order_date) AS cumulative_total
FROM orders;

分组聚合函数
SELECT employee_name, department, salary, AVG(salary) OVER (PARTITION BY department) AS avg_salary
FROM employees;

行号函数(通常用于合并字段值相同的行)
SELECT product_name, ROW_NUMBER() OVER (ORDER BY sales_volume DESC) AS row_num
FROM products;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlserver 联表查询、子查询、窗口函数、聚合函数等概念与例子 的相关文章

  • C# 查询两个数据库的数据

    我目前有一个查询 我正在从两个不同的数据库获取数据 这些数据被附加到一个名为 accountbuys 的列表中 我的第一个表有三个数据条目 3个想要购买股票的帐户 下一张表有 17 个数据点 购买 17 只股票 I am merging t
  • SQL Server查询麻烦,多对多关系

    不知道如何用一行字来表达这个问题 对标题表示歉意 我的数据库中有3个表 例如 Shop Item 商店库存 Shop 和 Item 具有多对多关系 因此 ShopStock 表将它们链接起来 ShopStock 中的字段是 ID ShopI
  • 将子查询的结果插入表中并带有常量

    相关表格的概要如下 我有一个表 我们称之为联接 它有两列 都是其他表的外键 我们将这两列称为 userid 和buildingid 因此 join 看起来像 join userid buildingid 我基本上需要在这个表中插入一堆行 通
  • 如何使用 PHP 从 MSSQL 读取图像字段

    我正在创建一个网站 需要同步从离线 MSSQL 服务器读取的在线 MySQL 数据库 除图像字段外 所有通信和从 MSSQL 读取所有字段均工作正常 我已经使用 PHP 和 Mysql 一段时间了 知道如何向 MySQL 数据库插入 检索图
  • SQL Server中主键和唯一索引的区别[重复]

    这个问题在这里已经有答案了 我的公司目前正在重写我们最近获得的一个应用程序 我们选择使用 ASP net mvc4 来构建这个系统 并使用实体框架作为我们的 ORM 我们收购的公司的前任所有者非常坚定地要求我们使用他们的旧数据库 并且不对其
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • SQL Server:删除除系统数据库之外的所有数据库

    在 PowerShell 中 我使用以下代码删除所有非系统 SQL Server 数据库 invoke sqlcmd ServerInstance sqlInstanceName U sqlUser P sqlPass Query EXEC
  • 为什么某些字符无法从 CFQUERY 正确注入到 SQL Server?

    我有一个在 Lucee 上运行的 Coldfusion 应用程序 它连接到 SQL Server 数据库 当我直接在 SQL Server 管理器中运行以下查询时 UPDATE article SET content 20m WHERE i
  • 在单个更新语句上使用事务

    我在工作中为一些 SP 配音 我发现编写代码的人在单个更新语句上使用了事务 如下所示 begin transaction single update statment update table whatever with whatever
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • SQL Server Express 到 .mdf 文件的连接

    两部分问题 我使用 VS 2015 Update 3 创建了一个 ASP NET MVC 5 应用程序 我在本地计算机上完成了该项目 突然 我无法再通过 SQL Server 对象资源管理器连接到 mdf数据库文件并出现以下错误 无法打开数
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • 在存储过程结束时显式删除本地临时表有什么好处?

    考虑以下伪 T SQL 代码 由存储过程执行 CREATE TABLE localTable
  • SQL Server 2000 中是否提供公用表表达式 (CTE)

    我最近发现了以下文章 http www tsqltutorials com with common table expressions php http www tsqltutorials com with common table exp
  • PHP DBlib PDO 问题

    我正在尝试通过 php 连接到 MSSQL 服务器 但我的 pdo 连接给我带来了困难和我不太理解的错误 我在下面粘贴的代码一周前运行得很好 突然间它就停止了 没有任何人进行任何更改 我仍然可以连接到服务器并直接从命令行运行查询 但我在 p
  • SQL Server 中的派生表

    我有这两个疑问 我不知道如何将它们组合在一起来制作派生表 我假设使用第二个查询作为主查询 并在主查询的 FROM 子句中使用第一个查询 SELECT EmailAddress Orders OrderID SUM ItemPrice Qua
  • SQL Server递归查询显示父级路径

    我正在使用 SQL Server 语句并有一张表 例如 item value parentItem 1 2test 2 2 3test 3 3 4test 4 5 1test 1 6 3test 3 7 2test 2 我想使用 SQL S
  • 按两列的最小值排序

    I use SQL Server 2008 R2 我需要按两列的最小值对表进行排序 该表如下所示 ID integer Date1 datetime Date2 datetime 我希望我的数据按至少两个日期排序 以这种方式对该表进行排序的
  • 在 SSIS 中使用合并任务的指南

    我有一个包含三个字段的表 其中一个是身份字段 我需要从具有其他两个字段的源中添加一些新记录 我正在使用SSIS 我认为我应该使用合并工具 因为其中一个源不在本地数据库中 但是 我对合并工具和正确的过程感到困惑 我有一个源 一个 Oracle

随机推荐

  • jax安装Ubuntu,cudnn版本查看

    Ubuntu18 04 有GPU jax安装后显示错误如图所示 无法识别GPU 使用升级后并不能解决 Cuda gt 11 8 and cudnn gt 8 6 采用如下方法重新安装 pip install jax cuda11 cudnn
  • 【详解】静态Web服务器搭建代码实现_Python

    目录 1 浏览器网络请求流程 2 搭建python自带静态web服务器 2 1 静态web服务器开发流程 2 2 返回指定页面 2 3 多任务版服务器 2 4 面向对象服务端 3 动态端口 1 浏览器网络请求流程 浏览器首先链接DNS服务器
  • “只出现一次的数字”系列 剑指offer--位运算学习(一)

    最近学了下位运算 简单说说收获吧 首先我们要了解下常见的位运算操作 与或非操作 异或操作 进阶规律 与或非 和 异或都是满足结合律的 重点 a b c ab b c a a 0 a a 1 0 b b 我们先来看看第一道题 做这道题需要一个
  • Spark on Kubernetes 与 Spark on Yarn 不完全对比分析

    前言 Apache Spark 是目前应用最广泛的大数据分析计算工具之一 它擅长于批处理和实时流处理 并支持机器学习 人工智能 自然语言处理和数据分析应用 随着 Spark 越来越受欢迎 使用量越来越大 狭义上的 Hadoop MR 技术栈
  • (转)提高网站速度的最佳实践

    原文来自 http www space007 com post 129 html 相信互联网已经越来越成为人们生活中不可或缺的一部分 ajax flex等等富客户端的应用使得人们越加 幸福 地体验着许多原先只能在C S实现的功能 比如Goo
  • 【blender建模功能】06 多边形建形工具

    blender 06 多边形建形工具全解 全参数 拓展对齐与自动合并 拓扑使用演示 1 使用方式 1 1 顶点预捕捉 1 2 创建面 1 3 边界边预捕捉 2 实用 2 1 位置对齐与自动合并技巧 2 2 边界边与顶点延伸面 2 3 快速点
  • 【重要!】一文理解指针作为函数参数传递!看完不懂你打我

    先说最重要的结论 当指针作为参数传入函数时 是值传递而非引用传递 其次 不要把指针在定义时和使用时搞混 定义时 值 p p p int p 变量 int变量 int p 一重指针 int变量的地址 int变量 int p 二重指针 int变
  • Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields解读

    摘要 我们的方法 能够有效的检测一个图像中的多人 通过Part Affinity Fields来学习身体的各部分及关联性 利用全局纹理信息 自下而上的方法 达到实时性和高精度 通过两个分支来学习到部位的位置和关联性 引言 一张图中的多人po
  • OceanBase能取代Oracle吗

    推荐两篇文章 1 http www ha97 com 5766 html 2 http www sohu com a 152030438 151779
  • Python3 juypterlab pyecharts 柱状图/条形图制作

    1 打开虚拟机 确保虚拟机中的mysql正常连接 2 数据准备 Navicat Premium正常连接虚拟机中的mysq 创建名为follow的数据库 再通过excel导入准备好的数据 3 Navicat Premium中查询评分9 0分以
  • 解析创客教育的实践进程

    算力已经成为数字时代的核心生产力 是拉动数字经济向前发展的新动能 对于AI算力的投入 也将加快人工智能这一重要的数字化技术与实体经济的融合 赋能传统产业转型升级 催生新产业新业务新模式 为我国数字经济做强做优做大做出应有的贡献 在孩子的学习
  • OpenHarmony鸿蒙系统源码编译

    学习资源 鸿蒙官网 https device harmonyos com cn home 开源代码仓库地址 https openharmony gitee com 源码获取 参考 https device harmonyos com cn
  • Unate function & Positive unate & Negtive unate

    Unate function Unateness gt Positive unate and negtive unate
  • python变量的引用赋值及深浅拷贝

    python变量的引用赋值及深浅拷贝 1 python的变量 1 1 可变数据类型 1 2 不可变数据类型 2 深浅拷贝 2 1 内存地址以及实际存储数据之间的关系 2 2 若拷贝对象是可变数据类型 2 3 若拷贝对象是不可变数据类型 1
  • MyBatis3入门

    这里对mybatis的入门介绍以官方最新MyBatis3 4 1为准 具体文档及jar包请访问 https github com mybatis mybatis 3 releases 以前经常都在使用mybatis 但通常都是和Spring
  • MFC 启用和禁用控件

    启用和禁用控件可以调用CWnd EnableWindow 函数 BOOL EnableWindow BOOL bEnable TRUE 判断控件是否可用可以调用 CWnd IsWindowEnable函数 BOOL IsWindowEnab
  • Oracle VM VirtualBOX下克隆虚拟机镜像

    Oracle VM VirtualBOX下克隆虚拟机镜像 Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像 1 通过命令操作 VBoxManage exe clonevdi F mysqlvm mysqledi
  • 二叉树的深度优先遍历和广度优先遍历js代码实现

    a 树的深度优先搜索和广度优先搜索 其实没了解过的时候 看见树就头晕 之后去搜了下 发现也不是什么困难的事情 其实树的深度优先搜索指的是不按照层级的规律去便利 像前序便利 中序后序便利都是属于深度便利的方式 树的广度便利就是按照层级关系 一
  • js 解构赋值

    取对象里的code以及value值 对象结构 var data code 1 message Hello World 常规取值做法 var code data code var message data message 用解构就方便简洁许多
  • sqlserver 联表查询、子查询、窗口函数、聚合函数等概念与例子

    with cte as的用法 查询的一个有用工具 允许创建临时命名结果集 可在查询中多次引用相同的子查询结果 可以提高查询的可读性和维护性 WITH cte name column1 column2 AS 这里是子查询 SELECT col