SQL Server中row_number函数用法入门介绍
作者:格子衫111 发布时间:2024-01-26 22:45:04
一、SQL Server Row_number函数简介
ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数。 行号以每个分区中第一行的行号开头。
语法实例:
select *,row_number() over(partition by column1 order by column2) as n
from tablename
在上面语法中:
PARTITION BY子句将结果集划分为分区。 ROW_NUMBER()函数分别应用于每个分区,并重新初始化每个分区的行号。
PARTITION BY子句是可选的。如果未指定,ROW_NUMBER()函数会将整个结果集视为单个分区。
ORDER BY子句定义结果集的每个分区中的行的逻辑顺序。 ORDER BY子句是必需的,因为ROW_NUMBER()函数对顺序敏感
二、Row_number函数的具体用法
1.使用row_number()函数对结果集进行编号
示例:
对test_user表的查询结果标记行号,并新增 “编号”列返回
-- 使用 ROW_NUMBER()函数对结果进行编号
select ROW_NUMBER() over(order by id) as 编号,*
from test_user;
运行结果:
可以看到,查询结果新增了一列,专门用来标记行号。
有了编号,我们就可以方便地进行分页查询了,如何操作,可参考另外篇文章:sqlServer如何实现分页查询
2.对结果集按照指定列进行分组,并在组内按照指定列排序
示例:
把test_user表的name按照小组进行分组显示,分组后在组内进行从低到高id排序
-- 使用partition by对结果集进行分组
select *,row_number() over(partition by name order by id) as n
from test_user;
运行结果:
3.对结果集按照指定列去重
示例:
对 test_user表按name进行分组显示,结果集中只显示每组中一条 id最小的数据
select a.* from (
select *,row_number() over(partition by name order by id) as row_id from test_user
) as a
-- 只查询组内编号为1的数据
where a.row_id<2;
运行结果:
查询结果先是经过name分组,然后组内进行id升序排序,组内编号为1的第1条数据,自然就是id最小的数据。
注意:
当我们按成绩分数查询名次等需求时,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果。这个时候就要用到另外一个函数,rank()和dense_rank()。
rank()和dense_rank()区别:
1、RANK()
在计算排序时,若存在相同位次,会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,4······
2、DENSE_RANK()
这就是题目中所用到的函数,在计算排序时,若存在相同位次,不会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,2······
总结
来源:https://blog.csdn.net/u012660464/article/details/127986482
猜你喜欢
- 问题发现在七月份时,经常发现有几个定时任务报错,查看了下异常原因,大概定位是数据库执行异常### Error querying databa
- 在上一篇Python接口自动化测试系列文章:Python接口自动化浅析logging日志原理及模块操作流程,主要介绍日志相关概念及loggi
- 正则表达式是用于处理字符串的强大工具,它并不是Python的一部分。其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语
- 1.作用域在python中,作用域分为两种:全局作用域和局部作用域。全局作用域是定义在文件级别的变量,函数名。而局部作用域,则是定义函数内部
- 推荐的国内镜像站[ 个人推荐清华大学pypi镜像站(https://mirrors.tuna.tsinghua.edu.cn/help/py
- 需求:用户输入运算表达式,终端显示计算结果代码:# !/usr/bin/env/ python3# -*- coding: utf-8 -*
- 用实例来说明 import 的作用吧。创建以下包结构。一个文件夹 cookFish/,下面包含两个文件, __init__.py和cookB
- pip是什么其实,pip就是 Python标准库(The Python Standard Library)中的一个包,这个包比较特殊,用它可
- 1.优化应用程序和业务逻辑,这个是最重要的。 2.数据库设计阶段范式和反范式的灵活应用。一般情况下,对于频繁访问但是不频繁修改的数据,内部设
- 今天一个域名查询系统出现故障,该系统是用的ASP调用XMLHTTP获取whois库的数据,具体错误如下: msxml3.dll 错
- session请求过程当第一次访问网站时,Seesion_start()函数就会创建一个唯一的Session ID,并自动通过HTTP的响应
- 作用:主要记录信息,便于定位查看问题。python logging模块官网:https://docs.python.org/zh-cn/3.
- 可匹配单行,也支持换行匹配[\s\S]*?加上括号,效果更好([\s\S]*?)来源:https://blog.csdn.net/ASUKA
- Graphical User Interface,简称 GUI,又称图形化用户接口,所谓的GUI编程,指的是用户不需要输入代码指令,只通过图
- 1.导入matplotlib.pylab和numpy包import matplotlib.pylab as pltimport numpy
- 一、安装mod_wsgi 3.4:./configure --with-apxs=/Users/levin/dev/apache2.2.27
- 我们也可以来做一个,但这个“定时器”的工作时间范围应控制在1个小时至100 毫秒之间: <%sub StartTi
- 1、用户有三种:活跃用户、沉睡用户、外部用户。2、据不完全统计,外部用户8亿,沉睡用户1.2亿,活跃用户1千万。3、就算不去管活跃用户,或者
- 方法1:pythonw xxx.py方法2:将.py改成.pyw (这个其实就是使用脚本解析程序pythonw.exe)跟 python.e
- 本文实例讲述了Python基于动态规划算法解决01背包问题。分享给大家供大家参考,具体如下:在01背包问题中,在选择是否要把一个物品加到背包