订阅更新

SQL 与数据库 面试题112 道

窗口函数、JOIN、去重、留存漏斗、MySQL 索引与事务

  1. 037 SQL Join 后数据量翻倍,你怎么排查?
  2. 042 SQL 去重怎么做?DISTINCT 和 ROW_NUMBER 怎么选?
  3. 047 SQL EXISTS、IN 和 JOIN 怎么选?
  4. 052 SQL 窗口函数 ROWS 和 RANGE 有什么区别?
  5. 057 SQL COUNT(*)、COUNT(1) 和 COUNT(列) 有什么区别?
  6. 062 SQL ROW_NUMBER、RANK 和 DENSE_RANK 有什么区别?
  7. 067 SQL UNION 和 UNION ALL 有什么区别?
  8. 068 SQL LEFT JOIN 条件放在 ON 和 WHERE 有什么区别?
  9. 069 SQL GROUP BY 和窗口函数有什么区别?
  10. 070 SQL GROUPING SETS、ROLLUP 和 CUBE 有什么区别?
  11. 073 SQL WHERE 和 HAVING 有什么区别?
  12. 074 SQL CASE WHEN 有哪些常见坑?
  13. 075 SQL COALESCE 和 NULLIF 怎么用?
  14. 076 SQL LAG 和 LEAD 怎么做环比、同比?
  15. 077 SQL 的逻辑执行顺序是什么?
  16. 078 SQL PIVOT 和 UNPIVOT 有什么区别?
  17. 113 SQL 中 NOT IN 遇到 NULL,为什么结果可能为空?
  18. 114 SQL 如何计算用户连续登录天数?
  19. 115 SQL 如何实现每个分组的 Top N?
  20. 116 COUNT(DISTINCT) 数据量很大时怎么优化?
  21. 133 SQL 如何计算次日、7日和30日留存率?
  22. 134 SQL 如何计算漏斗转化率?
  23. 135 SQL 如何计算中位数和分位数?
  24. 143 SQL 如何计算滚动7日活跃用户和移动平均?
  25. 144 SQL 执行计划怎么看?如何定位慢查询?
  26. 153 SQL 如何合并连续日期和连续区间?
  27. 154 SQL 相关子查询和普通子查询有什么区别?
  28. 163 SQL 递归 CTE 怎么处理层级和路径?
  29. 164 事务隔离级别和 MVCC 怎么理解?
  30. 173 SQL 联合索引的最左匹配怎么理解?
  31. 174 数据库 Nested Loop、Hash Join 和 Merge Join 怎么选?
  32. 183 SQL MERGE INTO 如何实现增量更新?
  33. 184 覆盖索引和 Index Only Scan 怎么理解?
  34. 201 SQL CTE 一定会物化吗?MATERIALIZED 和 NOT MATERIALIZED 怎么选?
  35. 202 SQL 分区裁剪为什么会失效?
  36. 211 SQL Join 重排为什么可能失效?
  37. 221 SQL 深分页为什么慢?游标分页怎么设计?
  38. 222 SQL 金额计算为什么有尾差?DECIMAL 怎么设计?
  39. 241 SQL 如何把用户行为切成会话?30 分钟规则有哪些边界?
  40. 242 SQL 展开多个数组为什么会翻倍?怎么保留位置对应关系?
  41. 249 MySQL redo log、undo log 和 binlog 有什么区别?CDC 为什么读 binlog?
  42. 251 SQL 补齐缺失日期后,怎么向前填充最近有效值?
  43. 252 SQL 怎么找出买齐所有指定商品的用户?
  44. 254 埋点数据怎么去重?event_id、重试和业务重复怎么区分?
  45. 261 SQL EXCEPT 和 NOT EXISTS 有什么区别?差集对账为什么会漏重复?
  46. 262 SQL 怎么计算同时在线人数峰值?开始和结束同一时刻怎么算?
  47. 271 SQL LAST_VALUE 为什么取不到最后一条?窗口边界怎么写?
  48. 272 SQL 怎么稳定抽取百分之一用户?随机抽样和哈希抽样有什么区别?
  49. 281 SQL 怎么统计新增、回流和流失用户?只看当天活跃够吗?
  50. 282 SQL 按有效期关联维表,为什么一笔订单会匹配两条记录?
  51. 283 SQL 用 MAX 拼出最新记录靠谱吗?为什么字段来自不同的行?
  52. 291 SQL 同比一定是日期减一年吗?闰年和同星期怎么对齐?
  53. 292 SQL FULL JOIN 对账,怎么区分缺了一行和字段本来就是 NULL?
  54. 299 数据开发怎么写测试?SQL 单测、集成测试和端到端验收怎么分工?
  55. 301 SQL 怎么求最长连续增长天数?只判断今天大于昨天够吗?
  56. 302 SQL Join 两边类型不一致会怎样?隐式转换为什么既慢又可能算错?
  57. 303 用户账号合并后,历史UV和付费人数要重算吗?OneID怎么保留版本?
  58. 311 SQL 多列去重能直接拼接吗?COUNT DISTINCT 为什么会少算?
  59. 312 SQL 怎么取每月最后一天?月末和最后一个工作日有什么区别?
  60. 321 SQL NTILE 能按金额均分用户吗?同分用户为什么会被分到不同桶?
  61. 322 SQL 聚合成数组为什么顺序会变?外层 ORDER BY 能管住数组内部吗?
  62. 331 SQL 日均值能直接再求平均吗?月均客单价为什么会算错?
  63. 332 SQL 统计首单用户,为什么先筛商品再排序会算错?
  64. 333 SQL 怎么计算每日累计UV?为什么不能把每日UV累加?
  65. 334 SQL 排名时 NULL 应该放哪里?加一个 DESC 为什么可能选错记录?
  66. 341 SQL 怎么统计跨天在线时长?按开始日期分组为什么会算错?
  67. 342 SQL 判断一组检查全部通过,为什么只看 MIN 或 BOOL_AND 不够?
  68. 01-01 ROW_NUMBER、RANK、DENSE_RANK 到底有什么区别?
  69. 01-02 怎么查连续登录N天的用户?
  70. 01-03 行转列和列转行,一篇讲透
  71. 01-04 用户留存率怎么算?从公式到SQL一篇讲清
  72. 01-05 累计求和与滑动窗口,窗口函数的高阶玩法
  73. 01-06 GROUP BY的3个隐藏陷阱,你踩过几个?
  74. 01-07 同比环比怎么算?从日环比到跨年同比全覆盖
  75. 01-08 大表JOIN慢到爆?聊聊MapJoin和数据倾斜
  76. 01-09 漏斗分析怎么写?从埋点到转化率一条SQL搞定
  77. 01-10 一道综合题收官:用SQL实现RFM用户分层
  78. 01-11 子查询 vs JOIN,到底该用哪个?
  79. 01-12 NULL的各种坑,90%的人至少踩过一个
  80. 01-13 3张表JOIN在一起,执行顺序到底是什么?
  81. 01-14 分区表设计得好,查询快100倍不是梦
  82. 01-15 日期函数全家桶,一篇搞定面试和工作
  83. 01-16 UNION ALL vs UNION,别再无脑用UNION了
  84. 01-17 SQL跑得慢?先看执行计划再说
  85. 01-18 PARTITION BY 和 GROUP BY 到底有什么区别?
  86. 01-19 WITH子句(CTE)不只是让SQL好看,还有这些门道
  87. 01-20 收官篇:一张图串起SQL面试所有知识点
  88. 07-01 一条查询突然变慢了,你怎么排查?
  89. 07-02 订单表5000万行查询越来越慢,你怎么办?
  90. 07-03 两个事务同时改同一条数据,一个超时失败了——怎么排查死锁?
  91. 07-04 主从延迟导致读到过期数据,你怎么解决?
  92. 07-05 高并发下单时库存超卖了,怎么用MySQL保证不超卖?
  93. 07-06 同一个事务里先更新再查询,查到的是旧数据——事务隔离级别到底怎么回事?
  94. 07-07 为什么用B+树而不是Hash索引?什么场景用Hash更好?
  95. 07-08 我有三个查询条件,组合索引怎么设计?顺序怎么定?
  96. 07-09 Binlog是什么?它和大数据有什么关系?
  97. 07-10 一主多从怎么设计?什么时候加从库,什么时候加缓存?
  98. 07-11 分页查询LIMIT 1000000, 20特别慢,怎么优化?
  99. 07-12 给大表加字段加索引,结果库卡死了——Online DDL怎么做?
  100. 07-13 突然报“Too many connections”,连接池怎么配?
  101. 07-14 把MySQL数据导入到Hive,有哪些方案?
  102. 07-15 MySQL 8.0有哪些值得关注的新特性?
  103. 07-16 生产环境的MySQL怎么备份?丢了数据怎么恢复?
  104. 07-17 字符集和Collation在生产环境踩过什么坑?
  105. 07-18 Buffer Pool怎么调优?内存分配有什么讲究?
  106. 07-19 SQL注入是什么?生产环境怎么防御?
  107. 07-20 请描述你在项目中是怎么使用MySQL的
  108. 16-02 GROUP BY做统计,一个Task卡死跑不完——COUNT(DISTINCT)为什么特别容易倾斜?
  109. 16-03 两张大表JOIN,某个key有500万条——JOIN倾斜的三种解法怎么选?
  110. 16-04 JOIN字段里有15%是NULL——NULL值倾斜怎么处理?
  111. 16-14 5张表连续JOIN,不知道倾斜在哪里——多表JOIN链路的系统性排查方法
  112. 16-16 面试官追问「你能现场写一个处理倾斜的SQL吗」——手写代码题怎么过?