mysql基础语法面试题

sql语法面试题记录

  • 窗口函数在sql执行流程中处于哪一步?
  • order by的执行顺序是哪一步?DISTINCT的执行顺序是哪一步?
  • order by中的排序字段必须是select中选择的字段吗?如果可以的话,那么继续对这个字段做DISTINCT去重操作可以吗?

基础语法题目推荐

大厂真题推荐

每个月Top3的周杰伦歌曲

推荐理由:三表左连接、多表查询、范围查询、多字段分组、时间函数、排名窗口函数

分析客户逾期情况

推荐理由:左连接、分组、聚合函数处理分组字段

获取客户每月消费额

推荐理由:时间处理函数

推荐内容准确的用户平均评分

推荐理由:exists的应用

每个商品的销售总额

推荐理由:内连接、分组、聚合函数处理分组字段,排名窗口函数

连续登录的用户

推荐理由,公用表达式拆分物化子查询求解,拆解过程如下

  • 使用内连接/in/exists来获取到近期等过的用户-登录时间维度的临时表tmp1
  • 对临时表tmp1通过用户+日期来进行分组,并通过窗口函数根据日期降序的方式获取到rank字段,这个rank字段即该用户在当天根据访问时间降序排列的名次,将用户,登录时间,rank三个字段组成临时表tmp2
  • 主查询中,直接获取临时表中全部rank大于3的数据,并对userId去重

统计用户从访问下单到转化率

  • 使用in或exists,获取下过订单用户的相关访客数据,将访客id和访问时间组成临时表tmp1
  • 根据tmp1按天统计当天下单客户的总量,并组成tmp2
  • 取visit_tb表,根据时间分组,获取当天时间全部的访客,注意这里是按天级别的时间分组的,因为同一个访客在同一天可能多次访问,需要去重访客id,按天统计当天下全部访客的总量,组成tmp3
  • tmp2和tmp3根据时间连表,计算转换率

网易云音乐推荐

  • 多个子查询结果集作为查询条件
  • 子查询结果集作为临时表tmp来和其它表做内连接查询并根据某字段降序
  • select的字段中没有包括排序字段,所以排序字段作为select的隐藏字段,导致select的字段无法直接做distinct去重操作,所以同时对隐藏字段和目标字段做distinct,生成第二个临时表tmp2,最终从tmp2中取出结果
相关推荐
YOU OU2 小时前
Redis基础常识与命令
数据库·redis·缓存
腻害兔3 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社4 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
萧瑟余晖5 小时前
JDK 26 新特性详解
java·开发语言
Database_Cool_5 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森5 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
马优晨5 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
Database_Cool_6 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白6 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql