sql摘要
文章平均质量分 51
劝学-大数据
不断尝试,永不认输
展开
-
SQL优化
为了提高性能,使用了高压缩 + compress high query + nologging的方式创建单独的临时表,这样第一部分使用半分钟就执行出来。对上面的代码,在PL/SQL数据库中进行查询时,跑了半小时以上一些没有跑出来,于是我在此做了优化,最终使结果在16分钟内跑出来。3.接着用第一部分的内容join t4表,然后 group by count(*) 最终生成了想要的结果。1. 首先t5表的数据量更少,考虑到t4表的数据量较大。选择先计算其他表的数据,然后生成结果集再join t4表。原创 2024-07-28 23:15:54 · 221 阅读 · 0 评论 -
PL/SQL oracle上多表关联的一些记录
在多表关联如下时,可以为一些从表创建临时表,提前在内存中存储,这样可以提高一定的查询效率。临时表需要定期清理。3. 在我尝试做一些从表的临时表时候,我对比了自己写的with CTE子查询的方法,发现。cte的方式多个子查询,与多张临时表的方式,来完成多表连接,效率上的差距大都差不多。4. 按照经理的指点,记得关联从表是,如关联t2表时,需要做关联字段的唯一性校验。1.记录自己在PL/SQL上写的几张表的关联条件没有跑出来的一些优化。操作跑不出来的一些问题,可能是数据量过大,未做分区过滤。原创 2024-07-17 22:29:07 · 309 阅读 · 0 评论 -
sql题之使用dense_rank,row_number,collect_set,later view explode解决最近日期信息的问题
从订单信息表(order_info)中查询出每个用户的最近三个下单日期的所有订单。原创 2024-02-02 18:46:57 · 710 阅读 · 0 评论 -
sql题之使用划分会话的方式解决统计间隔连续登录问题
现有各用户的登录记录表(login_events)如下,表中每行数据表达的信息是一个用户何时登录了平台。现要求统计各用户最长的连续登录天数,间断一天也算作连续,例如:一个用户在1,3,5,6登录,则视为连续6天登录。话不多说,某位大佬写的SQL我感觉挺牛的,然后我就把它的SQL拿过来。对于七天内连续三天登录,断一天也算这种的SQL题,基本上就是需要使用到lead,lag函数,以及使用日期减去排名之类的做法。一位大佬给出了划分会话的形式来解决七天内连续三天的问题。并且使用拼接concat的方式。原创 2024-01-31 22:57:25 · 1004 阅读 · 0 评论 -
SQL题解之使用union和sum解决同时在线人数问题
现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为,一个用户何时进入了一个直播间,又在何时离开了该直播间。原创 2024-01-31 22:31:27 · 894 阅读 · 0 评论 -
sql- sum if() 用法举例
题目:从订单明细表(order_detail)中查询出所有购买过商品1和商品2,但是没有购买过商品3的用户订单表 order_info订单明细表 order_detail计算逻辑。原创 2024-01-17 00:23:13 · 1511 阅读 · 0 评论 -
sql编程——join,concat,except,union all的使用举例。
sql题目favor_info期望效果题目讨论。原创 2024-01-13 17:56:21 · 552 阅读 · 0 评论 -
sql关键字——with 子查询,row_number()排名函数,lag()函数用法举例
lag()函数,取当前行的上一列,用法是lag(列,往上取的行数,填充值),如lag(score, 1, 0)rank()函数在进行排名时,值相同,总数排名会跳过,这样在进行关联时,等号左右两边关联不上,数据减少。表示取score这一列当前行的上一行作为新的一行,若超出窗口范围,则给值为0。所以这里使用row_number()进行排名,分数相同,排名顺序递增。这里将排名存储在虚表中,避免二次查询。通过这道题,我们学习了排名函数、虚拟表的使用。考虑到第一名同学没有上一行数据,给予0。原创 2024-01-04 00:01:15 · 903 阅读 · 0 评论 -
sql——窗口范围之partition by 与 order by
max受窗口函数的分区关键字 partition by 与order by影响,每行的最大值可能会有所不同,去掉关键字后,全局一致。order by 常用于对分区内的数据进行排序,常见的情况下,order by还能规定sql语句的影响范围。开窗函数的max()将会产生多行结果,并且受到partition by 与 order by 影响。在max() over()函数中,表示取一个分区内的最大值,与聚合max()不同,这里就体现了order by的行数影响,影响的是全局还是到当前行。原创 2024-01-02 00:42:30 · 1310 阅读 · 0 评论 -
sql之关键字substring与last_day的用法示例
Hive SQL用法为last_day(2020-02-01,1),而在一般sql中写法为last_day(2020-02-01,interval 1 days),略有不同。考虑到月份在1-11的时候,可以直接对当前日期的所在月份加1,而当为12月时,则需要使其下一月为1,故使用if 转换。last_day()函数是取日期的所在月份的最后一天,如2020-02-01的最后一日为2020-02-29,这样2013-08-01,变成了08,同时使用强制类型转换,将字符串变为整形,08 -> 8。原创 2024-01-01 20:33:21 · 741 阅读 · 0 评论 -
sql的性能优化之——distinct与group by
表A (uid,bid) ,uid代表:用户idbid代表:uid关注的用户id表数据示例:uid bid1 22 11 3------我的答案实际上,一需要考虑到数据中的去重问题chatgpt提供。原创 2024-01-01 01:52:17 · 1049 阅读 · 0 评论