`

SQL变化到极致

阅读更多
sql 代码
 
  1. select   
  2.     test_report.test_project_id,   
  3.     project_info.project_name,   
  4.     test_report.test_report_id,   
  5.     test_report.report_title,  
  6.     enum_data.enum_data_id,  
  7.     enum_data.enum_data_label,  
  8.     phase.phase_id,  
  9.     phase.PHASE_NAME,  
  10.     SUM(CASEWHEN(view.bug_id IS NULL,0,1)) as bug_num  
  11.       
  12.     from enum_data as enum_data   
  13.     inner join  test_report  as test_report    
  14.     on (enum_data.enum_data_type_id='BUG_CLASS' and test_report.TEST_PROJECT_ID= @projectId)  
  15.   
  16. left outer join TEST_REPORT_BUG_VIEW as view on
  17. (enum_data.enum_data_id = view.bug_class and  test_report. test_report_id = view.test_report_id),   
  18. project_info as project_info,  
  19. Phase as phase  
  20. where project_info.project_id=test_report.test_project_id  
  21. and @condition  
  22. and (test_report.check_out_phase=phase.phase_id 
  23. or (test_report.check_out_phase is null  and phase.project_Id=test_report.test_project_id and phase.phase_id=-1))  
  24. group by test_report.test_project_id,
  25. project_info.project_name,
  26. test_report. test_report_id,
  27. test_report. report_title,
  28. enum_data.enum_data_id,
  29. enum_data.enum_data_label,
  30. phase.phase_id,
  31. phase.PHASE_NAME       

      这个是我到目前为止写的最为复杂的一个SQL语句了。首先,enum_data表和Test_Report表做全关联,这里的数据库是HSQL数据库。
       第一个要点:全连接的on。我之前一直认为on是表示两个表之间的关联关系。但是,事实上on可以任何的连接条件。这里的on就是确定两个表的范围。
       第二个要点:视图。这个TEST_REPORT_BUG_VIEW也是我构建的视图。这个视图就是将TestReport表和BUG表作左外关联,以取出所有的TestReport表,不管该TestReport存在还是不存在BUG。
       第三个要点:
左外连接到视图。视图可以当作表来用,左外连接到这个视图,其中ON的条件是两个。那么如果有有满足的条件就会被选择出来。且左表是会被选择出来的。
       第四个要点:这些表做好连接操作之后,和其它的几个表做联合查询。查询出来的表项在Select语句中来写,筛选条件由where语句来确定,虽然这里的where语句比较复杂,但还是比较清楚的。
       第五个要点:GROUP BY。因为在Select中有sum()函数,因此,必须进行分组统计,分组的时候需要将选择的Select语句给选择出来。想知道为什么吗?笨,自己想。

       哈哈,总之,这个统计被测试项目各测试报告各BUG类别的统计就计算出来了。这还幸亏是HSQLDB数据库,要不就挂掉了。
分享到:
评论

相关推荐

    mybatis与hibernate

    当数据库结构变化时,MyBatis需要更新相应的SQL和映射配置,增加了维护工作量。 2. Hibernate,则更注重于全自动的“对象-关系”映射。它不仅管理对象到数据库表的映射,还负责生成和执行SQL。Hibernate的API提供了...

    看程序员是如何把自动化做到极致的! - 文章 - 伯乐在线1

    5. 数据迁移和同步:使用自定义脚本在不同数据库表之间进行数据迁移,例如基于特定条件复制特定列,这类似于SQL的`SP_Generate_Inserts`函数。 6. 生活中的自动化:自动化不仅限于工作,还可以融入日常生活,如Yash...

    支持多数据库的ORM框架ef-orm.zip

    阅读推荐:第3、4章 特点二,将SQL的使用发挥到极致,解决SQL拼凑问题、数据库移植问题 大部分OLTP应用系统到最后都不免要使用SQL/JPQL,然而没有一个很好的方法解决SQL在多种数据库下兼容性的问题。 EF-ORM中...

    hibernate 反射原理

    2. **对象状态管理**:Hibernate使用反射来监视和管理实体对象的状态变化,如插入、更新或删除操作。它通过反射读取和设置对象的字段值,从而保持对象与数据库之间的一致性。 3. **查询和操作**:Hibernate的查询...

    企业级管理软件快速开发平台介绍

    综上所述,极致管理软件开发平台以其模型驱动架构和成熟的基础结构,为企业级软件开发提供了强大的支持,降低了开发成本,提升了软件的灵活性和适应性,使得软件企业能够在快速变化的市场环境中抢占先机。

    企业级管理软件快速开发平台概述.pptx

    在技术特性方面,极致业务基础平台支持多种数据库并采用了ORM(对象关系映射)的数据访问技术,可以支持SQL原语。其工作流引擎能够灵活定义和执行各种业务流程。为了提高性能,平台创新性地采用了“最小流量”设计...

    oracle四大宝典之4:Oracle性能优化.docx

    优化的原因在于,随着数据量的增长和业务需求的变化,数据库性能可能会下降,导致用户等待时间增加,系统资源消耗过大。优化的目标并非无止境地追求极致,而是要在满足业务需求的同时,保持系统的稳定性和可维护性。...

    从自动化到智能化的数据库技术变革.pptx

    技术上的变化体现在云化互联和移动共享上,银行业务离柜率的大幅提升,以及企业对快速交付和极致用户体验的追求。这要求数据库技术实现端到端的优化,包括SQL审核优化、自主可控的开源技术以及DevOps开发运维一体化...

    几大厂商数据仓库解决方案

    Oracle Exadata 是Oracle公司推出的集成数据仓库平台,结合了数据库、存储、网络和硬件优化,实现了极致的性能和可扩展性。Exadata 提供实时分析,适用于需要处理复杂查询和大规模事务处理的企业。 3. **Teradata ...

    传统数据库上云三部曲.pptx

    阿里云的“传统数据库上云三部曲”是企业将现有数据库系统迁移到阿里云数据库服务的策略。这个过程通常包括评估、迁移和优化三个关键步骤,旨在确保业务连续性,减少中断,同时利用云计算的灵活性和可扩展性。 1. *...

    Golang主动式内存缓存的优化探索之路.pdf

    其次,本文讨论了在复杂的查询场景中,如何通过多种维度的查询来支持类似SQL的查询模式,以及如何处理内存不足的问题。这里提到了使用冷热数据交换策略和多种冷数据淘汰组件来实现内存的可扩展性,以及通过定制策略...

    itdb资产管理

    在数据库配置上,ITDB资产管理可能支持多种数据库类型,如MySQL、SQL Server或Oracle等,用户可以根据自身情况选择合适的数据库进行连接。数据库配置通常包括设置数据库地址、端口、用户名、密码以及数据库名称等...

    游戏建模面试自我介绍模板.docx

    我的专长在于使用C/C++/VC++(MFC/SDK)进行游戏开发,同时,我对SQL也有深入的理解,这使我能够在数据库管理和数据交互方面游刃有余。我在校期间就开始涉足网络游戏的开发,这段经历让我积累了宝贵的实践经验。 在...

    mybatis-mate 为 mp 企业级模块,支持分库分表,数据审计、数据敏感词过滤

    mybatis-mate 实现了这一功能,可以监控并记录SQL执行前后的数据变化,这对于合规性检查、故障排查和业务分析都极其重要。审计信息可能包括操作用户、操作时间、操作类型(增删改查)以及操作前后数据的具体差异。 ...

    BonCP_V0.8 最终版

    2. **连接预热**:启动时可以预先建立一定数量的连接,确保应用启动后即可快速使用到连接。 3. **自动关闭空闲连接**:通过配置可以设置连接的最大空闲时间,超过该时间未使用的连接会被自动关闭,防止资源浪费。 4....

    数据库系统触发器实验 .doc

    总的来说,触发器是数据库系统中实现业务逻辑自动化的重要工具,它们可以监控并响应特定的数据变化,确保数据的准确性和一致性。通过这样的实验,学生不仅掌握了SQL Server中触发器的基本用法,也加深了对数据库约束...

    多维度分析数据库复制与存储复制的架构差异.docx

    **技术实现:**当源数据库中的SQL语句执行后,相应的事务日志会被传输到远程备份数据库,并在那里被解析和应用,确保主备数据库的数据一致性。 **主备切换:**手动完成,服务地址需切换至备份数据库地址。切换模式...

Global site tag (gtag.js) - Google Analytics