首页 > 数据库 >sql分组,排序等一些函数的用法

sql分组,排序等一些函数的用法

时间:2022-12-07 15:34:06浏览次数:36  
标签:函数 分区 rank 分组 sql 排序 数据

今天项目的两个地图数据有问题,经检查是由于数据重复造成的,需要去重,解决问题后把使用的相关函数汇总一下

 

 

 

group by是分组函数,partition by是分区函数(像sum()等是聚合函数),注意区分。

 

用法: OVER(PARTITION BY… ORDER BY…)

 

比如例子中的,我创建了八条数据,其中四个人是一班,另外四个是二班,partition by s.class 就是对班级进行分区,order by 对成绩进行降序排序,最后观察查出来的rn

 

 

row_number() 顺序排序

 

 

 

上图中一班成绩为90,85,85,80,在成绩相同的情况下,先查出来的数据排名优先,所以排名是1,2,3,4

 

rank() 跳跃排序,如果有两个第一级别时,接下来是第三级别

 

 

 

rank()在成绩相同的情况下,会把数据并列,就像表里的两个85分是并列第二,80分则到了第四,所以是1,2,2,4

 

dense_rank() 连续排序,如果有两个第一级别时,接下来是第二级别

 

 

 

与rank不同的是,数据相同的情况下,相同的数据并列后,下一个数据的排名会直接跟在后面而不是把重复的数据排名空出来,所以是1,2,2,3

 

NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组有编号,编号从1开始,就像我们说的’分区’一样 ,分为几个区,一个区会有多少个。

 

 

这里查询了3次,第一次分为1个’区’ ,所以查询结果rn全是1,第二次分为2个区,查询结果为 1 1 2 2,意思就是 第一个 ‘区’ 为 1 1 两个编号的数据 ,第二个’区’为 2 2 两个编号的数据,第三次分为三个区,第一个 ‘区’ 为 1 1 两个编号的数据,第二个’区’只有2这个数据,第三个’区’只有3这个数据

 

关于Partition by:

Partition by关键字是Oracle中分析性函数的一部分,用于给结果集进行分区。它和聚合函数Group by不同的地方在于它只是将原始数据进行名次排列,能够返回一个分组中的多条记录(记录数不变),而Group by是对原始数据进行聚合统计,一般只有一条反映统计值的结果(每组返回一条)。

 

 

 

我们在末尾加一个group by 他会把相同数据分组后合并成一条了,但是partition却能返回一组中的多条数据

 

标签:函数,分区,rank,分组,sql,排序,数据
From: https://www.cnblogs.com/xieqisheng666/p/16963203.html

相关文章

  • Oracle迁移Mysql的sql语句修改需创建的function代码
    DELIMITER $$CREATE  FUNCTION `to_date`(in_str varchar(50), in_format varchar(50)) RETURNS datetime    DETERMINISTICBEGIN DECLARE my_format ......
  • MySQL8.0的caching_sha2_password问题
    问题描述及分析安装MySQL8.0后,使用MySQLWorkbench登录时报以下错误分析及查找相关资料后,发现MySQL8.0采用了新的更安全的验证方式,详情请查看​​mysql-8-0-4-new-default-......
  • MYSQL之MHA高可用集群
    一、MySQLMHA介绍 MHA(MasterHighAvailability)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automatingmasterfailover功能。MHA在监控到maste......
  • 字符集和排序规则
    字符集我们可以为MySQL服务器、数据库、表、字符类型的字段以及字符串常量指定一个字符集(CharacterSet)和排序规则(Collation)。其中,字符集决定了能够存储哪些字符,比如AS......
  • Mysql复制原理
    复制采用异步方式,效率高。 ......
  • 五. 排序算法
    1.定义:1.1原地排序和非原地排序def.原地排序算法使用恒定的的额外空间来产生输出。原地排序:选择排序,插入排序,希尔排序,快速排序,堆排序。非原地排序:归并排序,计数排序,基数排......
  • MySQL备份和恢复
    备份对于数据库至关重要,因为当数据库出现系统崩溃、硬件故障或者用户误删除数据时,可以利用备份进行恢复。另外,在升级MySQL之前进行备份也是一种必要的安全措施;而且备份还......
  • SQL Server undocument extended stored procedures
    一些有时候比较有用的扩展存储过程sp_MSgetversionThisextendedstoredprocedurecanbeusedtogetthecurrentversionofMicrosoftSQLServer.Syntax:EXECma......
  • 动态SQL遇到的问题
    看图    查不出来任何数据因为判断有问题修改方法如下: ......
  • PostgreSQL 12系统表(2)
    转:https://blog.csdn.net/weixin_49756466/category_11607112.htmlpg_namespace存储名字空间   pg_sequence包含有关序列的信息。   pg_indexes提供了数据......