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

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

with cte as的用法

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

WITH cte_name (column1, column2, ...) AS (-- 这里是子查询SELECT column1, column2, ...FROM your_tableWHERE 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;

http://www.lryc.cn/news/162343.html

相关文章:

  • GO学习之 消息队列(Kafka)
  • 搭建自己的OCR服务,第三步:PPOCRLabel标注工具安装
  • Java学习笔记37——网络编程01
  • powershell 搜索文本并返回行号
  • 网络原理
  • 力扣(LeetCode)算法_C++——同构字符串
  • 网管实战⑼:配置华为S5720交换机
  • 文件上传漏洞第十六关十七关
  • Try llama2 in NUC (by quqi99)
  • 强大易用的开源 建站工具Halo
  • 如何使用vuex
  • 动手深度学习——Windows下的环境安装流程(一步一步安装,图文并配)
  • 个人博客系统-测试用例+自动化测试
  • C语言文件读写常用函数
  • 【C++基础】实现日期类
  • C语言程序设计—通讯录实现
  • 实战:大数据Flink CDC同步Mysql数据到ElasticSearch
  • B-Tree 索引和 Hash 索引的对比
  • 入门Python编程:了解计算机语言、Python介绍和开发环境搭建
  • 深度解析Redisson框架的分布式锁运行原理与高级知识点
  • C#扩展方法
  • uniapp 高度铺满全屏
  • UG\NX二次开发 判断向量在指定的公差内是否为零,判断是否是零向量 UF_VEC3_is_zero
  • 2023年MySQL实战核心技术第一篇
  • hivesql执行过程
  • C语言学习:8、深入数据类型
  • 生成树协议 STP(spanning-tree protocol)
  • 【LeetCode】312.戳气球
  • 商业数据分析概论
  • Golang GUI框架