leetcode中sql题目分类与总结

基础50题

聚合函数

  • 项目员工,连接 + avg + group by
  • 各项函数用户的注册率:直接单表操作,count函数的使用,结合round进行保留小数。
  • 1211. 查询结果的质量和占比:简单的avg, sum(if(,,))的使用
  • 1193. 每月交易 I:年月日期函数的应用。data_format(date, '%Y-%m')获取类似01 02的这种月份。
  • 550. 游戏玩法分析 IV:连接后where过滤,on其实也可以起到过滤的作用。不过最好用where进行过滤。
  • 1174. 即时食物配送 II:每一行加上一个最小值列,然后让配送时间等于最小值列的时间,选出这个的数量 / 不同用户的数量。

排序和分组

1045. 买下所有产品的客户:简单分组, having子句过滤

619. 只出现一次的最大数字:子查询 + 分组 + 过滤

1729. 求关注者的数量:排序

596. 超过5名学生的课:

1084. 销售分析III:distinct的使用,可以从数量上进行统计。在这个区间的数量等于总的数量。

  • having count(sale_date between '' and '' or null)注意如果为空的情况

1141. 查询近30天活跃用户数:datadiff和<=处理时间

2356. 每位教师所教授的科目种类的数量:分类计数,分类计数,分类计数。使用group by。

子查询

  • 换座位:和最小的进行比较,然后使用case when进行选择
  • 部门排名前3的薪水

高级连接查询

  • 1907. 按分类统计薪水:列转行
  • 1204. 最后一个能进入巴士的人:如果存在超重的人,第一个超重的人(超重的人中turn最小的那一个)它的前一个就是,如果没有,最大的turn对应的人。ifnull放的位置。
  • 1164. 指定日期的产品价格:找到小于规定日期的最大日期,然后进行连接,过滤可以得到有修改的。最后通过product_id临时表连接这个表,使用ifnull(price, 10)得到答案。
  • 180. 连续出现的数字:连接或者子查询都可以
  • 判断三角形:ABS(x - y),保证任意两边之和大于第三边,任意两边只差小于第三边
  • 1731. 每位经理的下属员工数量:count(id):如果id是null的情况下,会统计成0.
  • 1789. 员工的直属部门:union使用的范例。

子查询

  • 585. 2016年的投资:不用连接可以直接子查询。
  • 1321. 餐馆营业额变化增长:distinct的使用

小结

行列转换:

  • union :纵向,可以统计一行,然后union起来。

  • join: 横向,可以统计一列,然后通过rowId或者其他连接点,连接起来。

你可能感兴趣的:(leetcode,sql,算法)