
数据库开发-SQL进阶
文章平均质量分 62
我爱夜来香A
不患人之不己知,患其不能也
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SQL进阶:如何把字段中的键值对转为JSON格式?
本文介绍了如何将数据库表中的键值对数据转换为JSON格式。首先,通过正则表达式或递归方法将键值对拆分为单独的行,然后使用数据库内置的JSON函数将拆分后的数据转换为JSON格式。在Oracle中,使用REGEXP_SUBSTR进行拆分,并通过json_arrayagg和json_object函数生成JSON数组。在MySQL中,由于缺乏正则拆分函数,采用递归方法进行拆分,并使用json_arrayagg和json_object函数生成JSON数组。文章还指出了Oracle在处理CLOB类型数据时的局限性,并原创 2025-05-09 17:35:15 · 517 阅读 · 0 评论 -
SQL进阶:如何查出某个日期第一列不为空的数据?
sql原创 2022-07-02 21:40:48 · 1110 阅读 · 0 评论 -
SQL进阶:求某个日期的连续上涨天数(常用于金融场景)
sql原创 2022-07-02 21:14:33 · 987 阅读 · 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 · 1017 阅读 · 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 · 639 阅读 · 0 评论 -
SQL进阶:Oracle函数如何返回多行多列?
如何把多行collections拼接成一个大表?可以使用cross join(笛卡尔连接)原创 2023-10-21 10:30:17 · 1033 阅读 · 0 评论 -
SQL进阶:Mysql如何实现full join?
【代码】Mysql如何实现full join?原创 2024-03-04 16:10:46 · 3238 阅读 · 0 评论 -
SQL进阶:如何跳过多个NULL值取第一个非NULL值?
如上述代码所示,按照产品分组,销售日期排序,用了coalesce()函数,表示若是amount为空,则取lag(),默认是取上一条,上一条若也为空,则用IGNORE NULLS语法忽略NULL值,再取上一个填充,直到找到非NULL值。某产品当天sale_date为空的销售价格取上一天的填充,最终想展示的如下述表格所示。原创 2024-11-25 09:29:31 · 1569 阅读 · 0 评论