精华内容
下载资源
问答
  • with 临时表 as (select ........) 关于with as 的用户在一下开发人员写的SQL语句有看到。说一下个人的理解 例如: with ...

    with  临时表  as   (select ........)

    关于with     as  的用户在一下开发人员写的SQL语句有看到。说一下个人的理解

    例如:

            with  a  as  (select *   from emp )   

    select ename,deptno,sal,(select avg(sal) from a where   deptno=a.deptno)    asal  from a  e;

    这个sql的使用with    as   是将表emp读到临时表空间中形成一个临时表a表,并且在下面的sql语句使用临时表a表,这样对表emp,只读一次(这里是全表扫,可以在SQL语句语句后边加where条件),后面的SQL语句

    select ename,deptno,sal,(select avg(sal) from a where   deptno=a.deptno)    asal  from a  e;执行的时候将读临时表中的数据。

    其中有一个问题,这样使用临时的表SQL语句的性能是否提高,这有待证明,这个SQL语句只是为了理解with  临时表  as .......没有注重SQL语句性能。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31547066/viewspace-2215768/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/31547066/viewspace-2215768/

    展开全文
  • PostgreSQL WITH 临时表

    千次阅读 2015-11-30 18:23:19
    WITH Distance AS ( SELECT "Scenic_Id",ST_DISTANCE_SPHERE(ST_MAKEPOINT("Scenic_Lon","Scenic_Lat"),ST_MAKEPOINT(104.036058,30.666089)) AS "Length"  FROM "tbScenics" WHERE  "Scenic_Lat">20.001 AND ...
    WITH Distance AS (
    SELECT "Scenic_Id",ST_DISTANCE_SPHERE(ST_MAKEPOINT("Scenic_Lon","Scenic_Lat"),ST_MAKEPOINT(104.036058,30.666089)) AS "Length" 
    FROM "tbScenics" WHERE 
    "Scenic_Lat">20.001 AND "Scenic_Lat"<50.001 AND 
    "Scenic_Lon">80.001 AND "Scenic_Lon"<105.001 ORDER BY "Length" ASC)
    SELECT "tbScenics".*,"Length" ,"Length" /10 FROM "tbScenics",Distance WHERE Distance."Scenic_Id"="tbScenics"."Scenic_Id" ORDER BY "Length" ASC;




    SELECT "tbScenics".*,ST_DISTANCE_SPHERE(ST_MAKEPOINT("Scenic_Lon","Scenic_Lat"),ST_MAKEPOINT(104.036058,30.666089)) AS "Length" ,
    ST_DISTANCE_SPHERE(ST_MAKEPOINT("Scenic_Lon","Scenic_Lat"),ST_MAKEPOINT(104.036058,30.666089))/10
    FROM "tbScenics" WHERE 
    "Scenic_Lat">20.001 AND "Scenic_Lat"<50.001 AND 
    "Scenic_Lon">80.001 AND "Scenic_Lon"<105.001 ORDER BY "Length" ASC;
    展开全文
  • #结构查询 SELECT c.column_name ,c.data_type ,c.column_type ,c.column_comment ,t.table_name ,t.table_comment FROM INFORMATION_SCHEMA.Columns c,INFORMATION_SCHEMA.tables t WHERE c.tABLE_SCHEMA=t....
    
    
    
      SELECT 
             Q1.YEAR LAST_YEAR
            ,Q1.SUM AS LAST_YEAR_SUM
            ,Q2.YEAR THIS_YEAR
            ,Q2.SUM AS THIS_YEAR_SUM
            ,CONCAT(ROUND((Q2.SUM - Q1.SUM)/(CASE Q1.SUM WHEN 0 THEN NULL ELSE Q1.SUM END ),2) * 100,'%') AS GROW_RATE 
          FROM (SELECT YEAR(FROM_DATE) AS YEAR,SUM(SALARY) AS SUM FROM SALARIES GROUP BY YEAR) AS Q1
              ,(SELECT YEAR(FROM_DATE) AS YEAR,SUM(SALARY) AS SUM FROM SALARIES GROUP BY YEAR) AS Q2
          WHERE Q1.YEAR = Q2.YEAR-1
          
          
          
     # 常规CTE
     
     WITH SUM AS (SELECT YEAR(FROM_DATE) AS YEAR
                         ,SUM(SALARY) AS SUM 
                        FROM SALARIES
                       GROUP BY YEAR
    )
     SELECT  Q1.YEAR LAST_YEAR
            ,Q1.SUM AS LAST_YEAR_SUM
            ,Q2.YEAR THIS_YEAR
            ,Q2.SUM AS THIS_YEAR_SUM
            ,CONCAT(ROUND((Q2.SUM - Q1.SUM)/(CASE Q1.SUM WHEN 0 THEN NULL ELSE Q1.SUM END ),2) * 100,'%') AS GROW_RATE 
          FROM SUM AS Q1,SUM AS Q2
         WHERE Q1.YEAR =Q2.YEAR-1
          
    # 递归CTE    学习有点不懂 
     WITH RECURSIVE TMP(N) AS (
       SELECT 1
        UNION ALL 
       SELECT N+1 FROM TMP WHERE N<5
     )
     SELECT * FROM TMP;
     
     
     CREATE TABLE EMPLOYEES_MGR(
      ID INT PRIMARY KEY NOT NULL COMMENT '员工编号'
      ,NAME VARCHAR(100) NOT NULL COMMENT '员工姓名'
      ,MANAGER_ID INT NULL  COMMENT '领导工号'
      ,INDEX (MANAGER_ID)
      ,FOREIGN KEY (MANAGER_ID) REFERENCES EMPLOYEES_MGR(ID)
     );
     INSERT INTO EMPLOYEES_MGR VALUES
      (333,'SUN YANZI',NULL)
      ,(198,'JOHN ZENG',333)
      ,(692,'TAREK',333)
      ,(29,'PEDRO LIU',198)
      ,(4610,'SARAH SZ',29)
      ,(72,'PIERRE',29)
      ,(123,'ADIL',692)
    
      #注意别写错 RECURSIVE
      WITH RECURSIVE EMPLOYEE_PATHS (ID,NAME,PATH) AS ( 
       SELECT ID 
              ,NAME
              ,CAST(ID AS CHAR(200)) 
            FROM EMPLOYEES_MGR 
           WHERE MANAGER_ID IS  NULL
       UNION ALL
       SELECT 
             G.ID
             ,G.NAME
             ,CONCAT(P.path,',',G.ID)
           FROM EMPLOYEES_MGR G,EMPLOYEE_PATHS P
          WHERE G.MANAGER_ID = P.ID
       
     )
     
     SELECT * FROM EMPLOYEE_PATHS;
     
     
      WITH RECURSIVE employee_paths (id , NAME , path) AS (
    	SELECT id
    	      ,NAME
    	      ,CAST(id AS CHAR(200)) AS path
    	 FROM employees_mgr
    	WHERE manager_id IS NULL
    		UNION ALL
    	SELECT e.id
    	      , e.name 
    	      , CONCAT(ep.path,',',e.id)
    	FROM employee_paths AS ep JOIN employees_mgr AS e
    	ON ep.id = e.manager_id
    	
    	)
    SELECT * FROM employee_paths ORDER BY path ;
      
    #表结构查询
     SELECT c.column_name
            ,c.data_type
            ,c.column_type
            ,c.column_comment 
            ,t.table_name
            ,t.table_comment
          FROM INFORMATION_SCHEMA.Columns c,INFORMATION_SCHEMA.tables t
         WHERE c.tABLE_SCHEMA=t.tABLE_SCHEMA
               AND c.table_name =t.table_name
               AND t.tABLE_SCHEMA='ccs' 
               AND t.TABLE_NAME='approve_flow_info' 
        ORDER BY c.ordinal_position ASC
    
    
    展开全文
  • with 临时表 递归

    2009-03-23 11:08:00
    declare @dt DATETIMEset @dt= 2009-3-12; WITH Liang AS ( SELECT dt=DATEADD(day,-DATEPART(day,@dt)+1,@dt),MONTH(@dt) AS m UNION ALL SELECT DATEADD(day

     

    declare  @dt DATETIME

    set  @dt= '2009-3-12';

     

     

        WITH Liang AS

        (

            SELECT dt=DATEADD(day,-DATEPART(day,@dt)+1,@dt),MONTH(@dt) AS m

            UNION ALL

            SELECT DATEADD(day,1,dt),m

            FROM Liang

            WHERE MONTH(DATEADD(day,1,dt))=m

        )

     

    select * from liang 

     

    展开全文
  • 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ...
  • WITH ABC AS (SELECT 1 A FROM DUAL UNION ALL SELECT 1 FROM DUAL UNION ALL SELECT 1 FROM DUAL) SELECT COUNT(DISTINCT A) FROM ABC UNION ALL SELECT COUNT(DISTINCT A) FROM ABC ```
  • Hive 中 FROM **
  • SQL Server 中 with tmp 临时表的用法----------with临时表用法,有时候采用临时表比采用in的效率更高,避免了全表扫描。实例中实现了查询普通题、大题、子题目的sql-----------(对于大题套小题,采用先查小题信息再...
  • with as 和临时表的使用

    千次阅读 2020-01-12 16:53:31
    with as 和临时表的使用with as 和建临时表的区别with as (公共表达式CTE)临时表使用技巧 with as 和建临时表的区别 with as (公共表达式CTE) 当我们书写一些比较结构复杂,用的表也很多的sql时,可以用with as...
  • with as 物化成临时表

    2020-09-04 09:17:48
    被调用 2 次及以上, CBO 优化器会自动把 with as 短语所获取的数据放入临时表中。 hint 关键字 描述 /+ materialize/ 会强制性要求 with as 中的结果转换为 临时表 /+ inline/ 与上相反,不转换 WITH t...
  • 工作中数据库数据处理有时会遇到这样一种情况,需要将多个字段集中收集到一起,然后在多个sql中多次使用这个收集好的数据集。一种方式是用时视图,将要...with临时表名as ( #数据查询语句 select a.x1, b.x2, ...
  • SQL数据库中数据处理时,有时候需要建立临时表,将查询后的结果集放到临时表中,然后在针对这个数据进行操作。... with temptable as 其实并没有建立临时表,只是子查询部分(subquery factoring),定义
  • 操作系统:WINDOWS 7 旗舰版 64位 硬件: 笔记本 ORACLE DATABASE: 11.2.0.4 64 位 RAC: NO 试验目的:测试WITH临时表...
  • SQL数据库中数据处理时,有时候需要建立临时表,将查询后的结果集放到临时表中,然后在针对这个数据进行操作。  创建“临时表”(逻辑上的临时表,可能不一定是数据库的)的方法有一下几种:  1.with ...
  • WITH子句提供一种定义临时表的操作方法,如果在一个查询中反复使用到一些数据,那么就可以将这些数据定义在WITH子句中。  WITH e AS ( select * from emp //将emp表中数据定义为一个临时表  )  ...
  • sql with 使用-临时表

    千次阅读 2018-10-27 10:14:45
     有些需求需要对多个表分别统计出结果,然后使用每个表统计的结果进行汇总,这个时候临时表就发挥作用了。 2、简单使用: with t1 as(select empId,yearMonth,sum(salary) as'a' from tb_salary where year...
  • 临时表 with tableName的用法

    千次阅读 2018-03-22 13:39:09
    有时候在Oracle查询时需要建立临时表,可以简化查询,使读者更加清楚明白,在一个查询sql中,可以使用临时表。用法:with tableName as...with a as --建立临时表 (select sum(pt.c_all) sumall, q.c_...
  • --利用with as 临时表 进行插入(修改)操作 INSERT INTO TEMP_REFRESHMANAGERDETAIL (PLAZABUDGETINFOID, PLAZABUDGETID, ACCOUNTCODEID, CODEFORMAT, NFNBUDGETMONTH1, NFNBUDGETMONTH2, NFNBUDGETMONTH3, ...
  • SQL数据库中数据处理时,有时候需要建立临时表,将查询后的结果集放到临时表中,然后在针对这个数据进行操作。... with temptable as 其实并没有建立临时表,只是子查询部分(subquery factoring),定...
  • with tmp_sql as (…需要重复使用的sql…)的方法,将这句话放在大查询的前面,相当于声明一个临时表叫tmp_sql,之后要用这个查询结果时,就直接select * from tmp_sql 就行,代码易读性会好很多。 ...
  • 网上有人给出了佳的优化思路是: ...  with子查询实际上也是用了临时表,Oracle会替你创建一张临时表,因此临时表的开销WITH子查询也会有。只要把AUTOTRACE打开你会看到REDO的开销。  关于临时表的使用至
  • oracle中with table as临时表

    千次阅读 2015-09-09 14:17:45
    with table as 是用于创建临时表,它是用来创建临时表,主要是在进行查询的时候,做一个测试用 个人感觉好处有如下几点: 1.起到一个测试作用,不需要创建实体表; 2.当你需要进行一个复杂的查询时,可以从中提取...
  • 近期一直写存储过程,考虑到应用程序扩展性和性能,用到大量的临时表,由于用create table #temp创建临时表性能很差,所以就采用with创建临时表,但是with创建临时有很多问题,比如创建成功后的临时表不能进行insert...
  • WITH AS 提升性能代替临时表

    千次阅读 2011-03-01 09:35:00
    WITH AS 提升性能代替临时表
  • with as 和 临时表的区别。

    千次阅读 2020-09-23 15:57:43
    with as 只是把子查询的语句当作了一个,但是真实的数据并没有插入到数据库,它的好处是增加了代码的可读性和进行维护。 --设计累计发生 with ljfssj as ( select b.ProjGUID, COUNT(*) Ljfscs, --...
  • 先将结果查询到临时表中,然后再从临时表中将所需要的字段提出,好处代码清晰,执行效率高! 基于with查询 例子有三张表,分别将三张表的结果存到临时表aa,bb,cc,然后将三张表组合查出需要的结果 with aa as ...
  • 报表用 with as 建临时表

    千次阅读 2018-06-29 18:46:06
    ORACLE WITH AS 用法 Posted on 2012-10-11 15:05 宽田 阅读(61524) 评论(0) 编辑 收藏 语法:with tempName as (select ....)select ... 例:现在要从1-19中得到11-14。一般的sql如下:select * from...
  • 1、with table as 相当于建个临时表(用于一个语句中某些中间结果放在临时表空间的SQL语句),Oracle 9i 新增WITH语法,可以将查询中的子查询命名,放到SELECT语句的最前面。 语法就是 with tempname as (select...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 943
精华内容 377
关键字:

with临时表