【SQL】1204. 最后一个能进入巴士的人(窗口函数;自连接)

前述

知识点学习:自连接和笛卡尔积连接的区别

题目描述

leetcode题目:1204. 最后一个能进入巴士的人

方法一:窗口函数

sql 复制代码
select person_name 
from(
    select *,
        sum(weight) over(order by turn) as sumweight
    from Queue
) A
where sumweight <= 1000
order by sumweight desc
limit 1;

方法二:自连接

sql 复制代码
select A.person_name
from Queue A, Queue B 
where A.turn >= B.turn
group by A.person_id
having sum(B.weight) <= 1000
order by A.turn desc
limit 1;

自连接和笛卡尔积连接的区别

引用 自连接和笛卡尔积连接的区别 总结:

1. 自连接:同一张表被当作不同表(设置不同别名)进行连接
  • 自连接顾名思义就是自己连接自己,因此只有一张表用来连接生成临时表;
  • 自连接需要通过"where"关键字来设置连接条件,而不是通过"on";
2. 笛卡尔积连接:不设置连接条件的连接
  • 连接的表可以是同一张表(要设置不同的别名,否则报错),也可以是多张不同的表;
  • 笛卡尔积连接的原理是不管两张或多张表的记录是否匹配,均一一对应生成新的记录,因此笛卡尔积连接不设置连接条件(如on,wher等)。
相关推荐
isNotNullX1 分钟前
数据分析没思路?5 个核心流程帮你理清所有步骤
数据库·数据挖掘·数据分析
OceanBase数据库官方博客3 分钟前
高德刘振飞:从自研 OceanBase,回望数据库技术范式变迁
数据库·oceanbase·分布式数据库·高德
Tony Bai10 分钟前
Git 即数据库:Beads (bd) —— 专为 AI Agent 打造的分布式任务追踪引擎
数据库·人工智能·分布式·git
yufuu9810 分钟前
进阶技巧与底层原理
jvm·数据库·python
2301_8174973310 分钟前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
xdpcxq102916 分钟前
.NET Core 双数据库 PostgreSQL 与 SQLite 和平共处
数据库·postgresql·.netcore
Apple_羊先森18 分钟前
ORACLE数据库巡检SQL脚本--13、临时表空间使用率
数据库·sql·oracle
sin_hielo22 分钟前
leetcode 3637
数据结构·算法·leetcode
2401_8414956423 分钟前
【LeetCode刷题】翻转二叉树
python·算法·leetcode··递归·节点·翻转二叉树