【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等)。
相关推荐
山岚的运维笔记14 分钟前
SQL Server笔记 -- 第52章 拆分字符串函数
数据库·笔记·sql·mysql·microsoft·sqlserver
YGGP19 分钟前
【Golang】LeetCode 189. 轮转数组
开发语言·leetcode·golang
Tisfy20 分钟前
LeetCode 3379.转换数组:下标取模
算法·leetcode·题解·模拟·取模
数据知道24 分钟前
PostgreSQL:详解 pgAudit 插件的使用(数据脱敏与审计)
数据库·postgresql
_千思_26 分钟前
【小白说】数据库系统概念 2
数据库·oracle
Re.不晚28 分钟前
Redis——分布式锁
数据库·redis·分布式
桂花很香,旭很美28 分钟前
[7天实战入门Go语言后端] Day 3:项目结构与配置——目录组织、环境变量与 viper
开发语言·数据库·golang
骇城迷影31 分钟前
代码随想录:数组篇
算法·leetcode
倔强的石头10631 分钟前
国产化时序替换落地指南:用金仓数据库管好海量时序数据
数据库·kingbase
生命因何探索34 分钟前
Redis—主从复制+哨兵
数据库·redis·php