`
zhangjim
  • 浏览: 52831 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

项目中的sql语句

 
阅读更多

# 以下sql可能性能不是很好,但用到了很多sql知识(备忘):

1. insert..select 批量导入数据。

2. SPP_BOOKING_SEQ.nextval 序列的使用。

3. group by & order by 二者同时使用时,order by后的排序字段需要出现在select中。

4. (+)所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配。

5. nvl去空函数。

6. sum, min, group by 使用多个聚合函数。

 

sql1:

 

insert into pexweb.spp_supp_search_result_stg
  (spp_kw_cat_id,
   spp_kw_cat_desc,
   spp_kw_cat_type,
   last_1_mth_search_cnt,
   last_3_mth_search_cnt,
   last_12_mth_search_cnt,
   refresh_date)

  select SPP_SUPP_SEARCH_RESULT_SEQ.nextval,
         spp_keyword,
         'keyword',
         last_1_mth_search_cnt,
         last_3_mth_search_cnt,
         last_12_mth_search_cnt,
         sysdate
    from (select *
            from (select distinct (c.spp_keyword),
                                  'keyword',
                                  nvl(a.last_1_mth_search_cnt, 0) last_1_mth_search_cnt,
                                  nvl(b.last_3_mth_search_cnt, 0) last_3_mth_search_cnt,
                                  c.last_12_mth_search_cnt,
                                  c.earliest_search_mth,
                                  sysdate
                    from (select spp_keyword,
                                 sum(search_cnt) last_1_mth_search_cnt
                            from spp_keyword_search_detail
                           where search_mth between
                                 (select to_number(to_char(sysdate - interval '1'
                                                           month,
                                                           'yyyymm'))
                                    from dual) and
                                 (select to_number(to_char(sysdate, 'yyyymm'))
                                    from dual)
                           group by spp_keyword) a,
                           
                         (select spp_keyword,
                                 sum(search_cnt) last_3_mth_search_cnt
                            from spp_keyword_search_detail
                           where search_mth between
                                 (select to_number(to_char(sysdate - interval '3'
                                                           month,
                                                           'yyyymm'))
                                    from dual) and
                                 (select to_number(to_char(sysdate, 'yyyymm'))
                                    from dual)
                           group by spp_keyword) b,
                           
                         (select spp_keyword,
                                 sum(search_cnt) last_12_mth_search_cnt,
                                 min(search_mth) earliest_search_mth
                            from spp_keyword_search_detail
                           where search_mth between
                                 (select to_number(to_char(sysdate - interval '12'
                                                           month,
                                                           'yyyymm'))
                                    from dual) and
                                 (select to_number(to_char(sysdate, 'yyyymm'))
                                    from dual)
                           group by spp_keyword) c
                           
                   where a.spp_keyword(+) = c.spp_keyword
                     and b.spp_keyword(+) = c.spp_keyword) d
           order by last_12_mth_search_cnt desc, earliest_search_mth desc) 
    where rownum <= 200000

 

 sql2: 子查询

左连接:左边字段全部会出现

select a.product_id "productId",
       a.folder_id "folderId",
       a.model_number "modelNumber",
       a.short_desc "shortDesc",
       a.category_desc "categoryDesc",
       nvl2(b.id, 'ON', 'OFF') onlineStatus
  from (select f.*
          from folder_product f
         where f.folder_id in (6000000094184, 6000000326795)
           and (posting_status is null or
               posting_status in ('Online', 'Offline'))
           and model_number like '%nov%') a
           
  left join (select distinct id
               from product_val_entity p1
              where attr_name = 'OnlineProduct'
                and exists (select 1
                       from product_val_code
                      where attr_name = 'WebsiteType'
                        and value = 'GSOL'
                        and id = p1.value)) b on a.product_id = b.id

 

sql3: 公用的部分先准备好

 with temp_data as (
select id from product_val_entity pve
where 
exists (select 1
          from product_val_code
         where attr_name = 'Status'
           and value = 'ON'
           and id = pve.id)
   and exists (select 1
          from product_val_code
         where attr_name = 'WebsiteType'
           and value = 'GSOL'
           and id = pve.id)
   and exists (select 1                                 
                  from product_val_entity                       
                 where attr_name = 'Contract'                   
                   and value = '2508813011239'                  
                   and id = pve.id)
 )
 
select a.pdfSpecSheet, b.additionalProduct, c.additionalImages 
 from (select count(*) pdfSpecSheet
        from product_val_entity pve
       where attr_name = 'Supplier'
        and value = '2008808594470' 
        and exists (select 1 
                from product_val_attachment
		           where attr_name = 'SpecFile'
		            and id = pve.id)
        and exists (select 1 
                from temp_data 
                where id = pve.id)) a,
 
      (select count(*) additionalProduct                       
         from product_val_entity pve                           
        where attr_name = 'Supplier'                           
         and value = '2008808594470'                          
         and exists (select 1                                 
                  from product_val_group                        
                 where attr_name = 'ImageGroup'                 
                   and id = pve.id) 
           and exists (select 1 
                  from temp_data 
                 where id = pve.id)) b,
                   
       (select count(*) additionalImages                        
          from product_val_group pve                            
         where attr_name = 'ImageGroup'                           
           and exists (select 1                                 
                  from product_val_entity pve                   
                 where attr_name = 'Supplier'                   
                   and value = '2008814022300'                  
                   and id = pve.id) 
           and exists (select 1 
                  from temp_data 
                 where id = pve.id)) c

 

分享到:
评论

相关推荐

    经典SQL语句大全

    本资源“经典SQL语句大全”提供了丰富的SQL语法示例,涵盖了Java或C#等编程语言在实际开发中与数据库交互时可能会用到的各种SQL语句。 首先,我们来探讨SQL的基础部分。SQL语句主要分为四大类别:SELECT(查询),...

    淘淘项目数据库sql语句

    在"淘淘"项目中,SQL语句可能被用来执行以下关键任务: 1. 数据库设计:SQL可以用于创建数据库结构,包括表、视图、索引等。例如,`CREATE TABLE`语句用于定义表格的字段和约束,`CREATE VIEW`用于创建虚拟表,`...

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    Java打印漂亮的SQL语句(被格式化的SQL语句)

    "标签"进一步强调了这个工具的关键特性,包括"Java输出漂亮的SQL语句",这意味着它是一个Java环境下的解决方案,能够集成到Java项目中,通过Java代码来调用和实现SQL语句的格式化。另一个标签"SQL格式化"则明确了它...

    通过解析sql语句获取表血缘关系项目

    这可能是一个函数或脚本,用于提取SQL语句中的表名,从而构建血缘关系图谱。 7. **实现步骤**: - 读取SQL语句。 - 使用解析库或自行编写的解析算法来分解SQL语句。 - 分析FROM、JOIN、INSERT、UPDATE、DELETE等...

    sql语句命令-sql语句命令sql语句命令

    在开发数据库应用程序时,SQL语句是至关重要的工具,用于查询、插入、更新和删除数据库中的数据。本文将深入探讨SQL语句命令及其在数据库操作中的应用,特别是使用ADO.NET框架进行数据库交互。 首先,我们需要了解...

    自己公司实际项目中SQL学习

    自己写的SQL语句 最近公司里面做报表就写了点 也许对大家有点点帮助。O(∩_∩)O谢谢

    Delphi中sql语句的使用总结

    ### Delphi中SQL语句的使用总结 在Delphi中使用SQL语句是与数据库进行交互的重要手段之一。本文将详细介绍如何在Delphi环境中构造和执行SQL查询,并给出具体的示例来帮助理解。 #### 一、基本SQL查询的构建 在...

    SQL语句SQL语句.zip

    在实际项目中,SQL脚本文件(如"SQL语句.sql")可能包含初始化数据库、填充测试数据或执行复杂数据转换的命令。 总之,掌握SQL是IT专业人士必备的技能,无论是在JavaWeb开发还是其他数据库相关的领域,SQL都是不可...

    自动生成SQL语句_C#_sql_

    本文将深入探讨如何在C#中自动生成SQL语句,以提高开发效率并减少手动编写SQL可能导致的错误。 一、Entity Framework与自动SQL生成 1. Entity Framework(EF)是微软提供的一个开源ORM(对象关系映射)框架,它...

    小区物业管理系统数据库SQL语句

    小区物业管理系统配套数据库SQL语句,在Oracle中导入该SQL语句,数据库建立成功

    SQL语句拼接工具,简化SQL语句拼写代码

    为了解决这个问题,出现了SQL语句拼接工具,如描述中提到的,它能帮助简化SQL语句的拼写代码,提高开发效率。 标题中的“SQL语句拼接工具”是指一种软件开发辅助工具,它的主要功能是自动化生成SQL语句,特别是在...

    C#不写SQL语句的数据库操作

    本主题将探讨如何在C#中进行不写SQL语句的数据库操作,实现对数据的增删改查功能。 首先,我们可以利用ORM(Object-Relational Mapping)框架来避免直接编写SQL。ORM框架允许开发者用面向对象的方式来操作数据库,...

    SQL语句辅助工具

    它能够解析SQL语句,并自动生成对应的C#代码,这样开发者就可以在C#程序中直接调用这些方法,而不是手动编写SQL字符串。这种方式不仅减少了手写代码的时间,还降低了因人为错误导致的潜在问题。 例如,一个SQL ...

    嵌入式SQL语句在VC++数据库系统开发中的技巧

    嵌入式SQL语句在VC++数据库系统开发中扮演着重要的角色,它允许开发者将SQL命令直接嵌入到C++程序中,实现高效且灵活的数据处理。本文将深入探讨嵌入式SQL的概念、构建方法以及在VC++环境下的具体应用。 嵌入式SQL...

    vc++SQL语句嵌套

    在提供的压缩包文件“实例81 SQL语句嵌套”中,很可能是包含了具体的源码示例,这些示例可以帮助初学者更直观地理解如何在VC++项目中编写和使用嵌套SQL语句。通过学习和实践这些示例,你将能更好地掌握这一技巧,...

    SQL语句格式化工具

    SQL语句格式化工具是一种非常实用的软件,主要用于帮助程序员和数据库管理员整理和美化他们的SQL代码,使其更易于阅读和维护。在SQL Server等数据库管理系统中,编写和修改SQL脚本是日常工作中不可或缺的一部分,而...

    根据word文档生成SQL语句(SQLServer) 及 实体类

    在日常工作中,我们经常需要根据业务需求创建对应的数据库结构,这通常涉及到编写SQL语句来定义表的结构。在大型项目中,这种工作量可能会非常大,因此,自动化工具的使用可以显著提高效率。本主题将深入探讨如何...

    C#中SQL语句调用

    ### C#中SQL语句调用详解 在.NET框架中,使用C#语言与SQL Server进行交互是非常常见的操作。本文将详细介绍如何在C#应用程序中编写SQL语句,并通过ADO.NET来执行这些语句。 #### ADO.NET简介 ADO.NET(ActiveX ...

    PB 从SQL语句获取数据存储(MySQL)

    标题 "PB 从SQL语句获取数据存储(MySQL)" 指的是使用PowerBuilder (PB) 开发工具,通过SQL语句从MySQL数据库中检索和处理数据存储的过程。在这个Demo中,PB11.5 版本被用作开发环境,而MySQL作为后台数据库系统。...

Global site tag (gtag.js) - Google Analytics