前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DM达梦数据库分析函数整理

DM达梦数据库分析函数整理

作者头像
用户11147438
发布于 2024-07-02 00:34:25
发布于 2024-07-02 00:34:25
1.1K00
代码可运行
举报
文章被收录于专栏:Linux系列Linux系列
运行总次数:0
代码可运行

引言

在复杂的数据分析场景中,达梦数据库的分析函数扮演着至关重要的角色。它们允许用户在单个查询中对数据进行分组、排序、排名及聚合计算,极大地提升了数据分析的灵活性和效率。本篇将深入探讨达梦数据库中几种关键的分析函数,并通过具体案例SQL来解析其用法,帮助你更好地掌握这些强大的工具。

一、窗口函数基础

窗口函数(Window Function)在处理数据时,为每一行数据定义了一个“窗口”(一组行),在该窗口内进行计算。这使得我们能够在保留表的原始行结构的同时,进行分组统计或排序比较。

1. RANK()DENSE_RANK()
案例:员工销售排名

假设有一个sales_data表,记录了员工的销售业绩。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 
    employee_id, 
    sale_amount,
    RANK() OVER (ORDER BY sale_amount DESC) AS rank,
    DENSE_RANK() OVER (ORDER BY sale_amount DESC) AS dense_rank
FROM sales_data;
  • RANK()会为销售金额降序排列的每个员工分配一个唯一的排名,相同销售额的员工会有相同的排名,但会导致后续排名跳过(如两个第一,则无第二,直接到第三)。
  • DENSE_RANK()则不会跳过排名,即使有相同的销售额,也会紧接上一个排名给出下一个连续的排名。

二、分组累加与平均值

2. SUM() OVER ()AVG() OVER ()
案例:计算累计销售额与平均销售额
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 
    month, 
    SUM(sale_amount) OVER (ORDER BY month) AS cumulative_sales,
    AVG(sale_amount) OVER (ORDER BY month) AS moving_average
FROM sales_data;
  • SUM() OVER ()按月份顺序计算累计销售额。
  • AVG() OVER ()计算截至当前月的移动平均销售额。

三、分区分组与排序

3. PARTITION BYORDER BY
案例:按部门计算员工销售排名
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 
    department, 
    employee_id, 
    sale_amount,
    RANK() OVER (PARTITION BY department ORDER BY sale_amount DESC) AS department_rank
FROM sales_data;
  • 使用PARTITION BY department对不同部门内的员工销售业绩进行独立排名。

四、偏移量函数

4. LAG()LEAD()
案例:获取上个月与下个月的销售额
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 
    month, 
    sale_amount,
    LAG(sale_amount) OVER (ORDER BY month) AS prev_month_sales,
    LEAD(sale_amount) OVER (ORDER BY month) AS next_month_sales
FROM sales_data;
  • LAG()获取前一行(上个月)的销售额。
  • LEAD()获取后一行(下个月)的销售额。

五、统计函数

5. COUNT() OVER ()ROW_NUMBER()
案例:统计部门内员工总数及分配行号
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 
    department, 
    employee_id, 
    ROW_NUMBER() OVER (PARTITION BY department ORDER BY hire_date) AS row_num,
    COUNT(*) OVER (PARTITION BY department) AS total_employees
FROM employee_details;
  • COUNT() OVER (PARTITION BY department)计算每个部门的员工总数。
  • ROW_NUMBER()按部门及入职日期为员工分配行号。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【数据库设计和SQL基础语法】--查询数据--聚合函数
聚合函数是一类在数据库中用于对多个行进行计算并返回单个结果的函数。它们能够对数据进行汇总、统计和计算,常用于提取有关数据集的摘要信息。聚合函数在 SQL 查询中广泛应用,包括统计总数、平均值、最大值、最小值等。
喵叔
2023/12/18
9330
Oracle分析函数
和聚合函数相似,但是对于每一组记录,无论多少行,聚合函数只返回一行值,而分析函数对其中每一行记录都返回值
HUC思梦
2020/09/03
1.1K0
Oracle分析函数
最强总结!数据库开窗函数完全指南!!
开窗函数(Window Functions)是SQL中强大的分析工具,允许我们在不改变结果集行数的情况下进行复杂的聚合和分析操作。本文将系统地介绍开窗函数的用法和实际应用场景。
SQL数据库开发
2024/11/12
5730
最强总结!数据库开窗函数完全指南!!
这些SQL排名及分析函数,你知道吗?(5)
SQL的排名函数主要有ROW_NUMBER(), RANK(), 和 DENSE_RANK(),它们分别返回行号、排名和紧密排名。这三个函数的区别在于处理并列排名的方式。
万能数据的小草
2024/07/23
2650
这些SQL排名及分析函数,你知道吗?(5)
深入MySQL窗口函数:原理和应用
窗口函数(Window Functions)是SQL标准中的一个高级特性,它允许用户在不改变查询结果集行数的情况下,对每一行执行聚合计算或其他复杂的计算。这些计算是基于当前行与结果集中其他行之间的关系进行的。窗口函数特别适用于需要执行跨多行的计算,同时又想保持原始查询结果集的行数不变的场景。
公众号:码到三十五
2024/03/19
3K0
深入MySQL窗口函数:原理和应用
mysql中分组排序_oracle先分组后排序
​ 窗口函数(window functions),也被称为 “开窗函数”,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可对数据库数据进行实时分析处理。它是数据库的标准功能之一,主流的数据库比如Oracle,PostgreSQL都支持窗口函数功能,MySQL 直到 8.0 版本才开始支持窗口函数。
全栈程序员站长
2022/11/10
8.1K0
10道常考SQL笔试题
题目:在 Employees 表中,获取每个部门(department)薪资最高的员工的姓名、部门和工资。表结构如下:
SQL数据库开发
2024/09/24
2040
10道常考SQL笔试题
MySQL8 窗口函数
MySQL8 还是有很多重量级变化的,一些底层优化大家在使用中有时候不易察觉,但是有一些用法,还是带给我们耳目一新的感觉,今天松哥和大家分享一下 MySQL8 里边的窗口函数。
程序猿川子
2024/11/08
2080
MySQL8 窗口函数
Hive常见的分析函数
窗口排序函数提供了数据的排序信息,比如行号和排名。在一个分组的内部将行号或者排名作为数据的一部分进行返回,最常用的排序函数主要包括:
大数据老哥
2021/07/05
7810
Hive常见的分析函数
大数据学习之数据仓库代码题总结上
请编写 SQL 查询,计算从注册当天开始的每个用户在注册后第1天、第3天、第7天的学习留存率。留存率的计算方式是在注册后的特定天数内继续学习的用户数除以当天注册的用户总数。结果应包含日期、留存天数和留存率。
bxia的厨房_公众号
2024/03/05
2561
大数据学习之数据仓库代码题总结上
最强总结!SQL Server/MySQL/Oracle函数完全指南!!
今天给大家总结的是SQL Server/MySQL/Oracle这三个关系数据库的函数内容,包含常用和不常用的。
SQL数据库开发
2024/11/13
3090
最强总结!SQL Server/MySQL/Oracle函数完全指南!!
Oracle分析函数、多维函数简单应用
十年前写的,关于Oracle分析函数、多维函数简单应用,主要针对BI报表统计,不一定很全面,但对BI应用场景做了少许说明。
python与大数据分析
2022/03/11
1K0
Oracle分析函数一——函数列表
今天在一个关注度颇高的技术公众号上看到一篇Oracle分析函数的文章,和我2009年写的博文很像,仔细看了一下,或许互联网上的抄袭不叫抄袭吧,愤愤然把之前的帖子翻了出来,结果还得靠申诉才能争取原创。后来修改了一会儿,还是发出去吧。
python与大数据分析
2022/03/11
7750
Oracle分析函数一——函数列表
用简单程序协助MySQL实现窗口函数
窗口函数是 SQL2003 标准才开始有的一系列 SQL 函数,用于应付一些复杂运算是比较方便。但是普遍使用的 MySQL 数据库对窗口函数支持得却很不好,直到最近的版本才开始有部分支持,这当然就让 MySQL 程序员很郁闷了。
星哥玩云
2022/08/17
1.4K0
用简单程序协助MySQL实现窗口函数
Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。然而,如果两行的确得到同样的排序,则序数将随后跳跃。若两行序数为1,则没有序数2,序列将给组中的下一行分配值3,DENSE_RANK则没有任何跳跃。
python与大数据分析
2022/03/11
9790
Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
Hive常用窗口函数实战
本文介绍了Hive常见的序列函数,排名函数和窗口函数。结合业务场景展示了Hive分析函数的使用
Eights
2020/07/13
2.8K0
MySQL 窗口函数详解:分析性查询的强大工具
MySQL 窗口函数提供了一种灵活的方式来处理 SQL 查询中的数据,它们允许你在不需要对数据进行分组的情况下对行集进行分析。窗口函数最常用于分析性操作,比如计算排名、累计和、移动平均值等。MySQL 从版本 8.0 开始支持窗口函数。以下是窗口函数的几个关键概念和常见用法:
科技新语
2024/12/17
1670
MySQL 窗口函数详解:分析性查询的强大工具
Hsql函数下_sql nvl函数
1、使用标准的聚合函数COUNT、SUM、MIN、MAX、AVG 2、使用PARTITION BY语句,使用一个或者多个原始数据类型的列 3、使用PARTITION BY与ORDER BY语句,使用一个或者多个数据类型的分区或者排序列 4、使用窗口规范,窗口规范支持以下格式:
全栈程序员站长
2022/09/29
1.3K0
Hsql函数下_sql nvl函数
Hive窗口函数/分析函数详解
在sql中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的。但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这时我们便引入了窗口函数。窗口函数又叫OLAP函数/分析函数,窗口函数兼具分组和排序功能。
五分钟学大数据
2021/03/04
9040
Hive窗口函数/分析函数详解
hive面试必备题
Hive存储的是逻辑上的数据仓库信息,包括表的定义、数据的存储位置(HDFS路径)、分区和表的元数据等。实际的数据文件存储在HDFS上,Hive通过HQL(Hive Query Language)实现对这些数据的SQL-like查询,本质上是将SQL查询转换为MapReduce任务在Hadoop上执行。
Spark学习技巧
2024/04/12
5440
hive面试必备题
相关推荐
【数据库设计和SQL基础语法】--查询数据--聚合函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验