![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode:SQL
强化SQL能力
Czi橙
Java努力中
展开
-
leetcode(SQL)1251.平均售价
接下来就简单了,我们需要计算平均售价即可,注意一个小问题,当没有销量时,平均售价应该是为0,而不是null,所以我们需要加入if判断.由于需要保留两个小数,所以最后的结果需要调用round函数.(记住还需要以商品id为分组哦,因为我们统计的是每一个商品的平均售价)注意产品的价格是在不同时期有着不同的价格.所以我们应该还需要加时间的判断加入进来.那我们是将时间的判断放在where当中呢?prices 表的每一行表示的是某个产品在一段时期内的价格。该表的每一行表示的是每种产品的出售日期,单位和产品 id。原创 2024-06-15 12:06:39 · 516 阅读 · 0 评论 -
数据库求同时在线人数问题
需要统计一段时间内最多的同时在线人数,这个问题业务场景不必多讲啦,例如直播,b站上同一个视频,与你同时观看的人数,我们随处可见.那话说回来,如何去求出这样一个同时在线的人数呢?我们来想想,例如一个教室,我们怎么去知道教室里的学生存在的数目是最多的.学生进来教室,学生的数量+1,离开教室,学生的数量-1.这是一个动态的过程,而在这个过程中,一定会有一个峰值.就是我们需要的最大值,那么依照前面的想法,`我们只需要按照学生进教室的时间进行排序,然后按照顺序统计学生的数量,然后计算每个时间内的最大值不就可以了原创 2024-05-25 22:06:19 · 581 阅读 · 0 评论 -
SQL.LeetCode(1193):每月交易Ⅰ
这主要是因为 SQL 的执行和解析方式。大多数数据库系统在解析 SQL 时,会优化查询。SQL 引擎解析GROUP BY时,会识别SELECT中定义的表达式。在SELECT中定义的month只是对的别名,数据库在执行GROUP BY时,实际上已经识别到它是,然后按这个表达式来进行分组。country,:在SELECT中计算每条记录的月份,并为其定义别名month。:在这里,SQL 引擎会识别到month实际上指的是,因此按月份和国家进行分组。总结:尽管 SQL 查询执行顺序中,原创 2024-09-08 13:10:10 · 1084 阅读 · 0 评论 -
SQL.LeetCode(1321)餐馆营业额变化增长
而除去前六天的数据可以已时间的差值来进行判定,拿到所有时间中的最小值,然后当天的时间剪去最小值的时间如果大于等于6就行。我们可以跳过前六天的数据,然后获取后面所有的数据即可,但是遇到一个麻烦的事,MySQL当中没有这样的语法说获取到后面所有的数据。每一天是有多条记录的,也就是会有多个顾客购买,我们应该是基于当天的总额来进行窗口的计算。我们知道一定的是基于七天的一个度量去进行计算,所以我们可以联想到一个窗口,窗口的大小固定为7,基于当天我们这个窗口包含住前6天的数据进行计算来得到结果。需要运用两次窗口函数。原创 2024-09-12 11:57:27 · 551 阅读 · 0 评论