【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等)。
相关推荐
冰暮流星13 小时前
MySQL 流程函数详解
数据库·sql·mysql
Darling噜啦啦13 小时前
从零搭建单词管理系统:Next.js + Supabase + Drizzle ORM 全栈实战
数据库·orm·next.js
数据狐(Datafox)13 小时前
1688商品详情API技术解析与落地应用(含标准 JSON 示例)
java·数据库·json
阿黎梨梨13 小时前
搭建一个单词管理后台:Next.js + Supabase + Drizzle
数据库·next.js
增量星球13 小时前
embedding专题之向量化革命:从关键词到语义检索
数据库·embedding
夕除13 小时前
redis--008
java·jvm·数据库
烬羽13 小时前
一个博客系统,为什么要拆成 6 张表?
数据库·mysql
程序员-Benothing13 小时前
MySQL 中的日志类型有哪些?binlog、redo log 和 undo log 的作用和区别是什么?
数据库·mysql
XuCoder14 小时前
你写的每条 SQL 都没加过锁,可 MySQL 凭什么不怕两个事务打架?
数据库·后端
2301_8009549914 小时前
MySQL 数据库基础:数据类型、查询与备份恢复
数据库·mysql·oracle