
数据库开发-SQL进阶
文章平均质量分 59
我爱夜来香A
不患人之不己知,患其不能也
展开
-
SQL进阶:如何查出某个日期第一列不为空的数据?
sql原创 2022-07-02 21:40:48 · 1031 阅读 · 0 评论 -
SQL进阶:求某个日期的连续上涨天数(常用于金融场景)
sql原创 2022-07-02 21:14:33 · 884 阅读 · 0 评论 -
SQL进阶:字段中包含CSV,如何通过Sql解析CSV成多行多列?
prior条件指的是当前递归在哪个层级下运行,比如上述例子一个csv字段描述的是一个班级的事情,递归是在这个班级下运行,所以prior条件要加上prior class_no = classno,不然会造成数据重复。需要把上述clob类型的csv字段用Sql的方式展开,如上述csv字段有三行三列,就需要把上述字段转成实际的三行三列,如下所示。Oracle数据库中某个字段value是CLOB类型,存的是csv格式的数据,如下所示。则不会循环进行拆分,只会拆分第一段,比如我那个例子,只会获取到。原创 2024-11-15 11:18:30 · 945 阅读 · 0 评论 -
SQL进阶:求满足某列数值相加无限接近90%的行(90分位)
表中有某个id列和数值列,求数值列占比为90%的id,如有个用户表,存储id和消费金额order_cnt,求一条sql查出消费占比无限接近90%的所有客户,如表中总消费为10000,占比最高的是4000、3000、2800,对应A、B、C用户,查出A、B、C用户。2、用到sum但是不能计算全部行的sum,而是计算某一个窗口的sum,可以用到开窗函数。3、开窗函数无分组参数,有排序参数,分析函数作用范围从表中第一行作用到最后一行。1、求占比为90%说明要用到聚合函数sum。原创 2023-07-24 16:32:29 · 589 阅读 · 0 评论 -
SQL进阶:Oracle函数如何返回多行多列?
如何把多行collections拼接成一个大表?可以使用cross join(笛卡尔连接)原创 2023-10-21 10:30:17 · 924 阅读 · 0 评论 -
SQL进阶:Mysql如何实现full join?
【代码】Mysql如何实现full join?原创 2024-03-04 16:10:46 · 2559 阅读 · 0 评论 -
SQL进阶:如何跳过多个NULL值取第一个非NULL值?
如上述代码所示,按照产品分组,销售日期排序,用了coalesce()函数,表示若是amount为空,则取lag(),默认是取上一条,上一条若也为空,则用IGNORE NULLS语法忽略NULL值,再取上一个填充,直到找到非NULL值。某产品当天sale_date为空的销售价格取上一天的填充,最终想展示的如下述表格所示。原创 2024-11-25 09:29:31 · 1356 阅读 · 0 评论