精华内容
下载资源
问答
  • sql with 使用-临时

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

    1、业务场景:

     有些需求需要对多个表分别统计出结果,然后使用每个表统计的结果进行汇总,这个时候临时表就发挥作用了。

    2、简单使用:

    with 
    t1 as(select empId,yearMonth,sum(salary) as'a'
    from tb_salary where yearMonth = '2017-01'
    group by empId,yearMonth
    
    ),
    
    t2 as (select empId,yearMonth,sum(salary) as'a'
    from tb_salary where yearMonth = '2017-02'
    group by empId,yearMonth ),
    
    t as (select t1.empId e1, t2.empId e2, t1.empId e3, isnull(t1.yearMonth,'2017-01') m1,
     isnull(t2.yearMonth,'2017-02') m2, '与上月差额
    ' m3 ,isnull(t1.a,'0') a1, isnull(t2.a,'0') a2,emp.staffNo,emp.staffName,emp.orgPath
    from t1 right join t2 on t1.empId = t2.empId RIGHT JOIN tb_employees emp on t2.empId = emp.empId) 
    
    -- 行转列
    select 1 n,tt.e2,tt.staffNo,tt.m1,tt.a1 from (select * from from t) tt union all
    select 2 n,tt.e2,tt.staffNo,tt.m2,tt.a2 from (select * from from t) tt union all
    select 3 n,tt.e2,tt.staffNo,tt.m3,(tt.a2-tt.a1) a3 from (select * from from t  where t.staffNo = '4289') tt
    ORDER BY t.e2 desc,n asc;

     

    展开全文
  • 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 和建临时表的区别

    with as (公共表达式CTE)

    当我们书写一些比较结构复杂,用的表也很多的sql时,可以用with as。
    with as 是子查询部分,并不是真正的临时表,查询结果保存在内存中。定义一个sql片段,该片段在整个sql都可以被利用,可以提高代码的可读性以及减少重复读,减少性能成本。

    with table1 as
    select one,tow,thire
    from A
    
    table2 as
    select one,five
    from B
    
    insert overwrite table AB  partition(dt={'hiveconf:dt'})
    select one,tow,thire,four,five
    from A left join B on A.one = B.one
    
    

    注意:后面必须直接紧跟使用CTE的SQL语句,否则失效

    临时表

    数据库临时表和永久表类似,储存在磁盘的临时区中,只有数据库连接断开,或者drop掉,才会消失。

    drop table if exists tmp.table1;
    create table tmp.table1 stored as orc as
    select one,tow,thire
    from A
    
    drop table if exists tmp.table2;
    create table tmp.table2 stored as orc as
    select one,five
    from B
    
    insert overwrite table AB  partition(dt={'hiveconf:dt'})
    select one,tow,thire,four,five
    from A left join B on A.one = B.one
    

    使用技巧

    1.来源于一张表的不同维度的数据,也倾向于在一次with as中收集齐全,命更高层次上抽象主题。避免同一张底表在多个with as中存在。
    2.在数仓开发之前,先理清楚需要用到的表以及字段,思考清楚以什么结构去开发,思考性能瓶颈是哪里。最好用白纸写清楚。磨刀不误砍柴工。
    3.表的连接:
    3.1优先汇总之后再连接
    3.2汇总维度相同,巧用union,不用join。取各个临时表所需的字段,收集齐全后,一次group by。

    展开全文
  • with as 和 临时的区别。

    千次阅读 2020-09-23 15:57:43
    with as 只是把子查询的语句当作了一个,但是真实的数据并没有插入到数据库,它的好处是增加了代码的可读性和进行维护。 --设计累计发生 with ljfssj as ( select b.ProjGUID, COUNT(*) Ljfscs, --...

    1.with as 

    with as 只是把子查询的语句当作了一个表,但是真实的数据并没有插入到数据库,它的好处是增加了代码的可读性和进行维护。

    --设计累计发生
    with ljfssj as (
    	select b.ProjGUID,
    		COUNT(*) Ljfscs,										--累计发生次数
    		SUM(ISNULL(a.ApproveAmount_Bz,0)) ljfsAmount			--累计发生金额
    	from cb_DesignAlterToContract a
    	left join cb_DesignAlter b on a.DesignAlterGuid = b.DesignAlterGUID
    	where b.ApproveStatusEnum = 3 and b.x_IsManagement <> 1 and b.ReportDate <= @jzdate group by b.ProjGUID
    ),
    
    --设计本期发生
    bqfssj as (
    	select b.ProjGUID,
    		COUNT(*) bqfscs,										--本次发生次数
    		SUM(ISNULL(a.ApproveAmount_Bz,0)) bqfsAmount			--本次发生金额
    	from cb_DesignAlterToContract a
    	left join cb_DesignAlter b on a.DesignAlterGuid = b.DesignAlterGUID
    	where b.ApproveStatusEnum = 3 and b.x_IsManagement <> 1 and b.ReportDate between @ksdate and @jzdate group by b.ProjGUID
    ),
    
    --设计累计确认
    ljqrsj as (
    	select b.ProjGUID,
    		COUNT(*) ljqrcs,										--累计确认次数
    		SUM(ISNULL(c.ValidationAmount_Bz,0)) ljqrAmount			--累计确认金额
    	from cb_DesignAlterToContract a
    	inner join cb_DesignAlter b on a.DesignAlterGuid = b.DesignAlterGUID
    	left join cb_DesignAlterZJSP c on a.DesignAlterGuid = c.DesignAlterGUID and a.ContractGUID = c.ContractGUID
    	where b.ApproveStatusEnum = 3 and b.x_IsManagement <> 1 and b.ReportDate <= @jzdate group by b.ProjGUID
    )

    2.临时表

    临时表的数据是需要插入到数据库的,所以一般用于做报表的话,在插入数据之后需要删除临时表。

    if OBJECT_ID('tempdb..#f1') is not null 
    drop table #f1
    SELECT 
    				Getin.ProjGUID,
    				Getin.BldGUID,
    				Getin.TopProductTypeGUID,
    				SUM(ISNULL(CurrGetin.CurrHjAmount, 0)) AS F1
    			into #f1 FROM   data_wide_s_Getin  Getin WITH(NOLOCK)
    					LEFT JOIN ( SELECT   GetinGUID,
    										SUM(CASE WHEN ItemType='非贷款类房款'
    														AND IsFk = 1
    														OR ItemNameGUID = '9165FAED-227A-465D-AA5D-D24BED655677' /*银行按揭*/
    														OR ItemNameGUID = 'C3190DC3-C295-4A98-B7AC-9DFF7D7A0091' /*公积金*/ THEN ISNULL(RmbAmount, 0)ELSE 0 END) AS CurrHjAmount
    								FROM     data_wide_s_Getin WITH(NOLOCK)
    								WHERE    
    										--ProjGUID IN (@ProjGuids)
    								--        AND 
    										VouchStatus <> '作废'
    										AND CONVERT(VARCHAR(100), SkDate, 23) >= CONVERT(VARCHAR(100), @BeginDate, 23)
    										AND CONVERT(VARCHAR(100), SkDate, 23) <= CONVERT(VARCHAR(100), @EndDate, 23)
    								GROUP BY GetinGUID ) AS CurrGetin
    						ON Getin.GetinGUID = CurrGetin.GetinGUID
    			GROUP BY Getin.ProjGUID,Getin.BldGUID,Getin.TopProductTypeGUID

    3.运行效率

    用with as ,其实跟直接用子查询效率上没有什么区别;而用临时表与永久表相似,数据是真是跑入到数据库里面去的,相当于第二次直接关联的是一个小表,查询效率大大提高。

    4.应用场景

    临时表适用于:有很多复杂的关联子表查询。

    with as 适用于:为了增加代码可读性,且没有很多复杂的关联子查询。

    展开全文
  • SQL创建里边的with什么意思

    千次阅读 2015-03-25 15:29:23
    SQL创建里边的with什么意思 2009-12-02 22:56anrow定 | 分类:数据库DB | 浏览2969次 例如Create table [dbo].[adminitable] ([adminpassword] [varchar](50) not null,[adminname] [varchar](20) not ...

    SQL创建表里边的with是什么意思

    2009-12-02 22:56 anrow定  |  分类:数据库DB  |  浏览2969次
    例如Create table [dbo].[adminitable]
    ([adminpassword] [varchar](50) not null,[adminname] [varchar](20) not nullconstraint [pk_adminitable] primary key clustered)
    ([admininame] asc)
    with (pad_index=off,statistics_norecompute=off,ignore_dup_key=off,
    allow_row_locks=on,allow_page_locks=on)
    on [primary] on [primary]
    上述语句大概是创建一个admintable,with后面的语句不知道什么意思,还有最后面两个on [primary]是什么意思???
    primary 是主键唯一约束
    with后面接的是表的约束
    这个我知道,我想问的是为什么要两个on [primary]?还有with后面的语句的具体意思...
    2009-12-04 16:33 提问者采纳
    你写上去的编译的时候有点小错误,正确的应该是这样写的
    Create table [dbo].[adminitable](
    [adminpassword] [varchar](50)  null,
    [adminname] [varchar](20)  null,
    
    constraint [pk_adminitable] primary key clustered
    (
      [adminname] asc
    )
    with (pad_index=off,statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on)
    on [primary]) 
    on [primary]
    constraint 是子句限制
    on [primary]是指的该表位于primary文件组,也就是主文件组,一个数据库可以分为n个文件组
    
    with 后面接的是索引描述
    pad_index是指定非页级索引页的数据充满度...
    提问者评价
    谢谢,是我粗心没看到这个符号)...

    展开全文
  • 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 ...
  • SQL Server中使用变量的方式: 如果查出有“wangwang”用户则返回,否则查询“zhangzhang”用户的id返回。有优先级 declare @temp table(id int) insert into @temp select id from user where name =...
  • ORACLE WITH AS 用法,创建临时

    千次阅读 2018-06-29 09:05:00
    语法: withtempNameas(select....)select... –针对一个别名with tmp as (select * from tb_...–针对多个别名with tmp as (select * from tb_name), tmp2 as (select * from tb_name2), tmp3 as (select * f...
  • 报表用 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...
  • fastadmin with查询

    千次阅读 2019-10-11 14:43:35
    目标模型位于“\app\admin\model\subsidize\”目录,而关联Area模型位于“\app\admin\model\”目录下,导致自成的控制器使用with('area')查询时显示到不到”\app\admin\model\subsidize\Area“模型。通过修改目标...
  • Hive_Hive WITH table_name AS 生成临时

    千次阅读 2020-04-08 23:06:22
    然后我们根据这个临时,进行之后的操作,但是创建临时有一定的开销。 如果这个临时并不需要保存,并且下文只需要用有限的几次,我们可以采用下面的方法。 背景: 当我们书写一些结构相对复杂的S...
  • oracle 临时 with as 写法

    万次阅读 2017-03-08 11:41:54
    项目中早些时间,有个oracle查询语句写的极其复杂,因为数据量小的关系,当时也并没有怎么在意,回来随着时间过去,客户数据库数量越来越大,... 寻求资料知道ORACLE有个WITH as 用法及其好用   写法大致如下:
  • mysql8 WITH AS(公用表达式)

    千次阅读 2020-01-07 10:29:50
    要指定公用表达式,请使用 WITH具有一个或多个逗号分隔子句的子句。每个子句都提供一个子查询,该子查询产生一个结果集,并将一个名称与该子查询相关联。下面的示例定义名为的CTE cte1和cte2中 WITH子句,并且是指...
  • oracle中with table as临时

    千次阅读 2015-09-09 14:17:45
    with table as 是用于创建临时,它是用来创建临时,主要是在进行查询的时候,做一个测试用 个人感觉好处有如下几点: 1.起到一个测试作用,不需要创建实体表; 2.当你需要进行一个复杂的查询时,可以从中提取...
  • sql之with as 公用表达式

    千次阅读 2016-07-05 23:14:17
    sql 中的with as 具有强大的功能,特别是在有递归需要的情况下,一般来说结合union all一起用。 示例如下: with w_Users(UserId) as ( select UserId from Users where UserId={0}
  • hive中使用with as查询作为临时中间

    千次阅读 2018-12-13 22:15:00
    oracle、hive都存在with as的用法。用于将重复的查询结果复用。 今天做统计分析时用到,使用例子如下: 1. 直接查询 with tmp_a as ( ...2. 多计算结果join with tmp_a as ( select f1,f2,f3 ...
  • $rows = syo::relation(['symerchants' => function ($query) { $query->field('id,name'); }])->where($where)->paginate(8); $m = syo::field('id,mid')->with(['sy...
  • "tt_data2 type STANDARD TABLE OF ty_data with UNIQUE key dsf. SYNTAX ERROR tt_data2 TYPE SORTED TABLE OF ty_data WITH UNIQUE KEY score, tt_data3 TYPE SORTED TABLE OF ty_data WITH UNIQUE KEY primary...
  • 临时 with tableName的用法

    千次阅读 2018-03-22 13:39:09
    有时候在Oracle查询时需要建立临时,可以简化查询,使读者更加清楚明白,在一个查询sql中,可以使用临时。用法:with tableName as...with a as --建立临时 (select sum(pt.c_all) sumall, q.c_...
  • SQL数据库中数据处理时,有时候需要建立临时,将查询后的结果集放到临时中,然后在针对这个数据进行操作。... with temptable as 其实并没有建立临时,只是子查询部分(subquery factoring),定义
  • SQL临时相关记录(WITH AS,#TMP)

    千次阅读 2018-01-09 15:58:05
    一.WITH AS的含义   WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在...
  • 一.WITH AS的含义  WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会 被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在...
  • 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ...
  • with用法小结

    千次阅读 2018-01-27 01:18:10
    文章转自:...版权归原作者! 一、with表拥有某物 Mary married a man with a lot of money . 马莉嫁给了一个有着很多钱的男人。 I often dream of a big house with a nice garden .
  • 最近优化sql,发现这个临时真是个好东西。分享出来(1)with基础使用WITH AS 语句可以为一个子查询语句块定义一个名称,使用这个子查询名称可以在查询语句的很多地方引用这个子查询。Oracle 数据库像对待内联视图...
  • sql 语句中with ur是什么意思

    万次阅读 2020-03-30 08:50:47
    2、cs(Cursor Stability) 在一个事务中进行查询时,允许读取提交前的数据,数据提交后,当前查询就可以读取到数据,update数据的时候并不锁。 3、rs(Read Stability) 在一个事务中进行查询时,不允许读取其他...
  • oracle with as用法

    千次阅读 2019-10-12 16:00:09
    相当于建了个临时 ,或者sql的别命名 with tmp1 as(select*from aa where id="001"), tmp2as(select*frombb where id="001"), tmp3as(select*from cc where id="001"), ...select *from tmp1 , tmp2,tmp3 ....
  • 文章目录 非递归 CTE 1. 派生(子查询) 2. CTE 3. CTE可以引用其他CTE 递归 CTE 1. 语法解释 2. 举个栗子
  • sql语句中with用法

    千次阅读 2019-10-08 12:00:53
    with嵌套子查询用法 在比较复杂,数据量大的...可以用 with语句 构建临时查询:具体用法如下: --只有一个临时with tmp as ( select empno ,ename ,sal from db_hive.emp) select t.empno,t.ename,t.sal fr...
  • 关于oracle with table as 创建临时的用法示例 1、with table as 相当于建个临时(用于一个语句中某些中间结果放在临时空间的SQL语句),Oracle 9i 新增WITH语法,可以将查询中的子查询命名,放到SELECT语句...
  • 结论with as 固化的结果集再添加条件再次使用的时候是可以使用原的索引的。 测试步骤如下: 1.构建测试 create table dbmgr.TEST_APPEND as select * from dba_objects ;  insert into dbmgr.TEST_APPEND ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 863,933
精华内容 345,573
关键字:

with表什么