首页 > 数据库 >SQL学习

SQL学习

时间:2023-02-24 11:24:16浏览次数:47  
标签:salary name OVER NUMBER 学习 SQL id ROW

一、函数学习

1、ROW_NUMBER() OVER()函数

语法格式:row_number() over(partition by 分组列 order by 排序列 desc)

注意;在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。

  ①表数据

 1 create table TEST_ROW_NUMBER_OVER(
 2        id varchar(10) not null,
 3        name varchar(10) null,
 4        age varchar(10) null,
 5        salary int null
 6 );
 7 select * from TEST_ROW_NUMBER_OVER t;
 8  
 9 insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(1,'a',10,8000);
10 insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(1,'a2',11,6500);
11 insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(2,'b',12,13000);
12 insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(2,'b2',13,4500);
13 insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(3,'c',14,3000);
14 insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(3,'c2',15,20000);
15 insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(4,'d',16,30000);
16 insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(5,'d2',17,1800);
View Code

 

  ②进行一次排序,无分组

格式:row_number() over(order by 字段 desc)
select id,name,age,salary,row_number() over(order by salary desc) rn from TEST_ROW_NUMBER_OVER 

  ③根据id分组排序

格式 row_number()over(partition by 字段1 order by 字段2 desc)
根据字段1进行分组,再根据字段2进行组内排序
select id,`name`,age,salary,row_number()over(partition by id order by salary desc) rn from TEST_ROW_NUMBER_OVER t;

  ④练习题

有这么一张表student,存在多个相同数据的项,因此请删除no、name、score都不相同的项。


第一步使用开窗函数筛选出以no、name、score为分组的项

select id,`no`,`name`,score,row_number()over(partition by `no`,`name`,score)as num from student

第二部通过join连接表进行删除多余相同的项

delete s from student s join 
(select id,`no`,`name`,score,row_number()over(partition by `no`,`name`,score)as num from student) a 
on s.id = a.id where num != 1

执行完delete后在查询整个student表

2、DATE_ADD()函数

3、时间函数NOW()和SYSDATE()

标签:salary,name,OVER,NUMBER,学习,SQL,id,ROW
From: https://www.cnblogs.com/suzbuing/p/17150521.html

相关文章

  • sql查询多个结果逗号分隔为同一行显示
    sql查询数据结果selecte.ctrl_descfromt_ctrl_entryeinnerjoinCodeGroupKeyCodescone.ctrl_code=c.KeyCodewherec.GroupId='3060'ande.roomid=c.RoomIdG......
  • Java数组学习
    Java数组学习ArrayDemo1packagecom.yuan.array;publicclassArrayDemo1{//变量的类型变量的名字=变量的值;//数组类型//数组的长度......
  • docker学习(三):docker镜像分层原理及本地镜像推送到阿里云或私服
    前言大家好,这是我学习docker系列的笔记文章,目标是掌握docker,为后续学习K8s做准备。本文记录了docker镜像分层加载的原理,及如何把本地镜像推送到阿里云服务器或者本地私服......
  • mysql数据类型以及各种语句的总结
    数据类型分类整数型,浮点型(float和double),定点数,字符串(char,varchar,text),日期时间类型,修饰符字符串(char,varchar,text)char(n)固定长度,最多255个字符,注意不是字......
  • MyBatis支持多种数据库连接(多种sql语法支持)
    1、说明这里说的多种数据库连接,是指同时支持多种Sql语法,可做到不同类型数据库使用同一套后台代码而不用改动,不是多数据源。这里有一种简单的方式可以实现,就是使用MyBatis的d......
  • 使用Alpine Linux做基础镜像备份mysql8.0+数据库
    说明本篇文章仅是基于k8scronjob备份mysql8.0+数据库,使用AlpineLinux作为基础镜像时遇到的问题做下简单的排坑,没有涉及到具体的部署细节,后面有时间再补上。镜像打包#......
  • Day01-Markdown学习
    Markdown学习要看具体格式可在安装Typora中在点击“启动源代码模式”标题:一级标题:#+空格+标题,二级标题:##+空格+标题,三级四级标题同理 字体Hello,World!(字体两边......
  • 选择最佳机器学习模型的10步指南
    机器学习可以用来解决广泛的问题。但是有很多多不同的模型可以选择,要知道哪一个适合是一个非常麻烦的事情。本文的总结将帮助你选择最适合需求的机器学习模型。完整文章:......
  • 软件工程|UML学习
    转载自一文掌握14种UML图-腾讯云开发者社区-腾讯云(tencent.com)什么是UML?UML是UnifiedModelLanguage的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语......
  • 云原生|kubernetes|部署MySQL一主多从复制集群(基于GTID的复制)
    前言:一,MySQL的主从复制优点如下:数据更安全:做了数据冗余,不会因为单台服务器的宕机而丢失数据性能大大提升:一主多从,不同用户从不同数据库读取,性能提升扩展性更优:流量增大时,可......