SQL开发实例和优化

简介: 找出连续的数据 如1,2,3,48,50,51,52,53,67,68 找出连续的数字的起点和重点 1,3 48,48 51,53 67,68 create table test.


找出连续的数据 如1,2,3,48,50,51,52,53,67,68
找出连续的数字的起点和重点
1,3
48,48
51,53
67,68
create table test.range_problem(
 
    a int not null,
    primary key (a));
insert into test.range_problem values(1);
 
insert into test.range_problem values(2);

insert into test.range_problem values(3);

insert into test.range_problem values(48);

insert into test.range_problem values(50);

insert into test.range_problem values(51);

insert into test.range_problem values(52);

insert into test.range_problem values(53);

insert into test.range_problem values(66);

 insert into test.range_problem values(67);
 
 
  
  
   --思路1 找最后一个不连续的数
   SELECT T1.A
   FROM test.range_problem T1
   WHERE NOT EXISTS
   (
     SELECT A
     FROM test.range_problem T2
     WHERE T2.A -1 = T1.A
   )
  
  
   --思路2  找所有行对应的结束值
   SELECT ROW_NUMBER()OVER(ORDER BY TBASE.A) ID
         ,TBASE.A
         ,(SELECT Min(A)
           FROM test.range_problem T1
           WHERE NOT EXISTS
           (
             SELECT A
             FROM test.range_problem T2
             WHERE T2.A -1 = T1.A
           )
           AND T1.A >= TBASE.A  --T1.A 是3,48,53,67 TBASE.A 是每行的值
          ) A_END
                         
   FROM test.range_problem TBASE
  
   --思路3 分组后找出所有连续的起始值和结束值
   SELECT MIN(A) A_START, A_END
     FROM(
     SELECT ROW_NUMBER()OVER(ORDER BY TBASE.A) ID
           ,TBASE.A
           ,(SELECT Min(A)
             FROM test.range_problem T1
             WHERE NOT EXISTS
             (
               SELECT A
               FROM test.range_problem T2
               WHERE T2.A -1 = T1.A
             )
             AND T1.A >= TBASE.A  --T1.A 是3,48,53,67 TBASE.A 是每行的值
            ) A_END
                           
     FROM test.range_problem TBASE
   ) T
   GROUP BY T.A_END
  
   --对上面语句的优化
   WITH POT AS(
           SELECT A
           FROM test.range_problem T
           WHERE NOT EXISTS
           ( SELECT A
             FROM test.range_problem TC
             WHERE TC.A -1 = T.A)
         )
       
        
         SELECT TBASE.A A_START,(SELECT MIN(A)
                               FROM  POT T
                               WHERE TBASE.A <= T.A 
                               ) A_END
         FROM test.range_problem TBASE


          

 

目录
相关文章
|
3天前
|
SQL 存储 关系型数据库
【MySQL】SQL 优化
【MySQL】SQL 优化
20 0
|
1天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之是否可以使用 DataStream API 或 Flink SQL 开发任务
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
13 0
|
2天前
|
SQL 分布式计算 Apache
实时计算 Flink版产品使用合集之如何选用 Flink SQL 的方式进行开发
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
15 1
|
3天前
|
SQL 缓存 关系型数据库
一次sql改写优化子查询的案例
在生产环境中,一个MySQL RDS实例遭遇了高CPU使用率问题,原因是执行了一条复杂的UPDATE SQL语句,该语句涉及一个无法缓存的子查询(UNCACHEABLE SUBQUERY),导致子查询需要针对每一行数据重复执行,极大地影响了性能。SQL语句的目标是更新一行数据,但执行时间长达30秒。优化方法是将子查询转换为内连接形式,优化后的语句执行时间降低到毫秒级别,显著减少了CPU消耗。通过示例数据和执行计划对比,展示了优化前后的时间差异和执行效率的提升。
|
3天前
|
SQL 关系型数据库 数据管理
Microsoft SQL Server 是微软公司开发的一款关系型数据库管理系统
【5月更文挑战第14天】Microsoft SQL Server 是微软公司开发的一款关系型数据库管理系统
16 2
|
3天前
|
存储 SQL 关系型数据库
掌握高性能SQL的34个秘诀🚀多维度优化与全方位指南
掌握高性能SQL的34个秘诀🚀多维度优化与全方位指南
|
3天前
|
SQL 存储 关系型数据库
【MySQL系列笔记】SQL优化
SQL优化是通过调整数据库查询、索引、表结构和配置参数等方式,提高SQL查询性能和效率的过程。它旨在减少查询执行时间、减少系统资源消耗,从而提升数据库系统整体性能。优化方法包括索引优化、查询重写、表分区、适当选择和调整数据库引擎等。
233 3
|
3天前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在DataWorks中使用ODPS SQL时遇到"该文件对应引擎实例已失效,请重新选择可用的引擎实例"的错误提示”,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
39 0
|
3天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
3天前
|
存储 SQL 缓存
30个业务场景的SQL优化
这些优化策略和示例可以帮助改善 `SQL` 查询的性能和效率。在实践中,需要综合考虑数据库设计、`SQL` 编写、服务器配置等多方面因素,选择合适的优化方法,并进行充分的测试和验证。以上 30 个经验是 V 哥在实际经验中总结的内容,当然,业务场景不同,具体的优化策略也会不同,按实际情况处理,这不就是程序员要做的事情么。