ROW_NUMBER、RANK、DENSE_RANK 在并列值时分别返回什么名次?
ROW_NUMBER、RANK、DENSE_RANK 在并列值时分别返回什么名次? 本文先给出可直接复述的结论,再用最小代码说明ROW_NUMBER RANK DENSE_RANK 并列 区别的工作方式、判断依据、项目边界和常见误区。
SQL专题面试题第 3 页,显示第 101–148 题,共找到 148 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
ROW_NUMBER、RANK、DENSE_RANK 在并列值时分别返回什么名次? 本文先给出可直接复述的结论,再用最小代码说明ROW_NUMBER RANK DENSE_RANK 并列 区别的工作方式、判断依据、项目边界和常见误区。
用 SUM() OVER 算累计和时,默认窗口帧为什么会在排序值重复时算错? 本文先给出可直接复述的结论,再用最小代码说明SUM OVER 累计和 默认窗口帧 RANGE ROWS的工作方式、判断依据、项目边界和常见误区。
标量子查询返回多行时报错,而返回零行时得到 NULL,这一语义如何使用和防御? 本文先给出可直接复述的结论,再用最小代码说明SQL 标量子查询 多行报错 零行 NULL的工作方式、判断依据、项目边界和常见误区。
如何用 SQL 自连接查询员工及其直属上级的姓名? 本文先给出可直接复述的结论,再用最小代码说明SQL 自连接 self join 层级 员工上级的工作方式、判断依据、项目边界和常见误区。
集合运算对两侧 SELECT 的列有什么要求,结果列名和数据类型如何确定? 本文先给出可直接复述的结论,再用最小代码说明UNION 列数 类型匹配 结果列名 类型解析的工作方式、判断依据、项目边界和常见误区。
用子查询改写 JOIN 时为什么有时必须加 DISTINCT 才能保证结果一致? 本文先给出可直接复述的结论,再用最小代码说明SQL 子查询 改写 join DISTINCT 去重 语义等价的工作方式、判断依据、项目边界和常见误区。
如何用窗口函数实现「每个部门工资最高的两名员工」,并处理并列工资? 本文先给出可直接复述的结论,再用最小代码说明SQL 每组 Top N 窗口函数 ROW_NUMBER 并列的工作方式、判断依据、项目边界和常见误区。
UNION 和 UNION ALL 结果何时相同,为什么能确定无重复时应优先用 UNION ALL? 本文先给出可直接复述的结论,再用最小代码说明UNION UNION ALL 区别 去重 性能的工作方式、判断依据、项目边界和常见误区。
SELECT 里同时有 GROUP BY 和窗口函数时,窗口函数能看到哪些行? 本文先给出可直接复述的结论,再用最小代码说明窗口函数 GROUP BY 执行顺序 聚合后的工作方式、判断依据、项目边界和常见误区。
窗口帧的 ROWS BETWEEN 和 RANGE BETWEEN 在分组对等行处理上有什么区别? 本文先给出可直接复述的结论,再用最小代码说明窗口帧 ROWS RANGE GROUPS 区别 peer 行的工作方式、判断依据、项目边界和常见误区。
为什么窗口函数不能写在 WHERE 里,想要过滤窗口结果该怎么办? 本文先给出可直接复述的结论,再用最小代码说明窗口函数 WHERE 不能用 子查询过滤的工作方式、判断依据、项目边界和常见误区。
窗口函数和 GROUP BY 都按分组计算,结果集结构上有什么本质区别? 本文先给出可直接复述的结论,再用最小代码说明窗口函数 GROUP BY 区别 保留明细行的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 显式事务中一条语句报错后,为什么后续语句都报 current transaction is aborted 错误? 本文先给出可直接复述的结论,再用最小代码说明current transaction is aborted错误原因与处理的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 咨询锁(advisory lock)与行锁的本质区别是什么,适合哪些应用场景? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL advisory lock 咨询锁 应用层互斥的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 会话级与事务级咨询锁在释放时机上有什么区别,选错会导致什么问题? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL advisory lock 会话级 事务级 区别的工作方式、判断依据、项目边界和常见误区。
为什么给 PostgreSQL 大表加列默认值或建普通索引可能长时间锁表,有什么低影响的替代方案? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 大表 DDL 锁表与在线建索引的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 如何检测死锁,deadlock_timeout 参数控制的是什么? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL deadlock_timeout 死锁检测的工作方式、判断依据、项目边界和常见误区。
拿到 PostgreSQL 死锁日志后,如何从中还原出是哪些语句按什么顺序持锁造成的? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 死锁日志 分析 deadlock detected的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中把隔离级别设为 Read Uncommitted 会发生什么,脏读真的存在吗? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL Read Uncommitted 脏读的工作方式、判断依据、项目边界和常见误区。
为什么 PostgreSQL 提供 FOR NO KEY UPDATE 这种行锁,它比 FOR UPDATE 弱在哪里? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL FOR NO KEY UPDATE 外键 锁的工作方式、判断依据、项目边界和常见误区。
为什么更新父表主键或删除父表行时可能被子表外键检查阻塞,涉及哪些锁? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 外键 锁 阻塞 KEY SHARE的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中每条单语句自动成事务与显式 BEGIN 多语句事务在错误处理上有何差别? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 自动提交 显式事务 错误处理的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的 ACCESS SHARE、ROW EXCLUSIVE、ACCESS EXCLUSIVE 这些表锁模式哪些互相冲突? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 锁模式 冲突矩阵 ACCESS EXCLUSIVE的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的 lock_timeout 与 statement_timeout 分别在哪一阶段中断语句,如何配合使用? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL lock_timeout statement_timeout 区别的工作方式、判断依据、项目边界和常见误区。
长事务对 PostgreSQL 有哪些具体危害,为什么会让 VACUUM 无法回收死元组? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 长事务 危害 VACUUM 膨胀的工作方式、判断依据、项目边界和常见误区。
MVCC 带来的表膨胀是怎么形成的,PostgreSQL 靠什么机制回收旧版本? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL MVCC 表膨胀 VACUUM的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 判断一个行版本对某事务是否可见时依据哪些信息? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 行版本可见性 xmin xmax的工作方式、判断依据、项目边界和常见误区。
Read Committed 下单条 SQL 语句执行期间,其他事务提交的修改对该语句可见吗? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL Read Committed 语句级快照 可见性的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中 Read Committed 与 Repeatable Read 在同一事务多次读同一行时结果有何不同? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL Read Committed Repeatable Read 区别的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的只读可延迟事务(READ ONLY DEFERRABLE)在 Serializable 下能带来什么优化? 本文先给出可直接复述的结论,再用最小代码说明READ ONLY DEFERRABLE 只读可延迟事务的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中行级锁和表级锁分别在什么操作下产生,如何互相影响? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 行锁 表锁 锁级别的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 保存点(SAVEPOINT)允许事务内部分回滚,它与重试整条语句的方案有何不同? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL SAVEPOINT 部分回滚 子事务的工作方式、判断依据、项目边界和常见误区。
高频冲突场景下用 SAVEPOINT 包住语句逐条处理,为什么会带来子事务性能问题? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 保存点 子事务 性能 开销的工作方式、判断依据、项目边界和常见误区。
PostgreSQL Serializable 隔离级别下事务可能因为什么失败,应用必须做什么? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL Serializable 序列化失败 40001 重试的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中 SET TRANSACTION 与 SET SESSION CHARACTERISTICS 的作用范围有何不同? 本文先给出可直接复述的结论,再用最小代码说明SET TRANSACTION 与会话级隔离级别区别的工作方式、判断依据、项目边界和常见误区。
用 SELECT FOR UPDATE SKIP LOCKED 实现数据库任务队列时如何保证同一任务不被两个 worker 重复领取? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL SKIP LOCKED 任务队列 实现的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 导出事务快照(pg_export_snapshot)解决的是什么一致性问题? 本文先给出可直接复述的结论,再用最小代码说明pg_export_snapshot 导出一致性快照的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的 snapshot_too_old 参数为什么会让长事务报错,解决了什么运维问题? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL snapshot_too_old 长事务的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的事务 ID 回卷问题是怎么产生的,为什么要求定期 VACUUM FREEZE? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 事务ID 回卷 wraparound FREEZE的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 预备事务(PREPARE TRANSACTION)解决什么问题,为什么残留预备事务很危险? 本文先给出可直接复述的结论,再用最小代码说明PREPARE TRANSACTION 两阶段提交与残留风险的工作方式、判断依据、项目边界和常见误区。
INSERT ON CONFLICT DO UPDATE 相比先查再插为什么能避免并发下的重复键错误? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL upsert ON CONFLICT 并发安全的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中两个事务并发更新同一行时,后到的事务会经历什么过程? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 写写冲突 行锁 等待的工作方式、判断依据、项目边界和常见误区。
权限系统的数据范围如“本部门可见”如何在 SQL 层稳定生效,又不拖垮列表查询? 本文先给出可直接复述的结论,再用最小代码说明权限 数据范围 SQL 过滤 索引的工作方式、判断依据、项目边界和常见误区。
命令注入和 SQL 注入的共同根源是什么,调用系统命令时如何安全传参? 本文先给出可直接复述的结论,再用最小代码说明命令注入 OS Command Injection 防御的工作方式、判断依据、项目边界和常见误区。
除 SQL 外,LDAP、XPath、模板引擎注入的共同防御思路是什么? 本文先给出可直接复述的结论,再用最小代码说明注入 LDAP XPath 模板 SSTI 防御的工作方式、判断依据、项目边界和常见误区。
页面不回显报错和数据时,如何识别与理解布尔型、时间型盲注的危害? 本文先给出可直接复述的结论,再用最小代码说明盲注 布尔 时间型 SQL 注入 检测的工作方式、判断依据、项目边界和常见误区。
参数化查询无法绑定表名和 ORDER BY 列名时,如何安全地支持动态排序? 本文先给出可直接复述的结论,再用最小代码说明SQL 注入 ORDER BY 动态排序 标识符的工作方式、判断依据、项目边界和常见误区。
参数化查询为什么能根治 SQL 注入,它和字符串转义有什么本质区别? 本文先给出可直接复述的结论,再用最小代码说明SQL 注入 参数化查询 预编译 原理的工作方式、判断依据、项目边界和常见误区。