SQL笔记-2024/01/31

cross join

两个表的笛卡尔积

例如:

select s.name student_name,s.age student_age,s.class_id class_id,c.name class_name

from student s

cross join class c;

子查询

select s.name name,s.score score,s.class_id class_id

from student s

where s.class_id in (select distinct c.id from class c);

子查询 - exists

select s.name,s.age,s.class_id

from student s

where 1=1

and not exists (select 1 from class c where c.id = s.class_id);

组合查询

union 不保留重复行

union all 保留重复行

select s.name,s.age,s.score,s.class_id

from student s

union all

select sn.name,sn.age,sn.score,sn.class_id

from student_new sn;

开窗函数 - sum over

select s.id id,s.name name,s.age age,s.score score,s.class_id class_id,AVG(score) over (partition by class_id) as class_avg_score

from student s;

开窗函数 - sum over order by

select s.id id,s.name name,s.age age,s.score score,s.class_id class_id,SUM(score) over (partition by class_id order by score asc) as class_sum_score

from student s;

开窗函数 - rank

select s.id id,s.name name,s.age age,s.score score,s.class_id class_id,RANK() over (partition by class_id order by score desc) as ranking

from student s;

查询进阶 - 开窗函数 - row_number

select s.id id,s.name name,s.age age,s.score score,s.class_id class_id,ROW_NUMBER() over (partition by class_id order by score desc) as row_number

from student s;

开窗函数 - lag / lead

select s.id id,s.name name,s.age age,s.score score,s.class_id class_id,

LAG(name,1,null) over (partition by class_id order by score desc) as prev_name,

LEAD(name,1,null) over (partition by class_id order by score desc) as next_name

from student s;

相关推荐
忘梓.19 分钟前
数据库从零开始:MySQL 中的 DDL 库操作详解【Linux版】
linux·数据库·mysql
Code季风3 小时前
SQL关键字三分钟入门: 表结构管理与分区设计。(ALTER、MODIFY、CHANGE、DEFAULT、VALUES、LESS THAN、RANGE)
数据库·sql·less
执 、5 小时前
SpringBoot定时监控数据库状态
java·数据库·ide·spring boot·后端
不恋水的雨5 小时前
数据库char字段做trim之后查询很慢的解决方式
数据库·sql
眠りたいです7 小时前
MySQL基础与常用数据类型浅析
linux·数据库·mysql
唐可盐8 小时前
Oracle/MySQL/SqlServer/PostgreSQL等数据库的数据类型映射以及各版本数据类型情况说明
数据库·mysql·oracle
阑梦清川8 小时前
C#建立与数据库连接(版本问题的解决方案)踩坑总结
开发语言·数据库·c#
自由鬼8 小时前
Vitess 深度解析:一个云原生 MySQL 数据库扩展系统
数据库·mysql·云原生
码明9 小时前
4.查看、删除数据库
数据库·oracle
mit6.8249 小时前
[Data Pipeline] MinIO存储(数据湖) | 数据层 Bronze/Silver/Gold
数据库·python