HGDB-with查询

环境

系统平台:Microsoft Windows (64-bit) 10
版本:5.6.5

文档用途

介绍如何使用WITH查询

详细信息

WITH查询这一特性通常被称为CTE(Common Table Expressions),WITH查询在复杂查询中定义一个辅助语句(临时表),通常这一特性用于复杂查询或递归查询。

复杂使用CTE:

例1:

WITH t as (



    SELECT generate_series(1, 3)



)



SELECT * from t;

例2:

WITH regional_sales as (

    SELECT region, SUM(amount) AS total_sales

    FROM orders

    GROUP BY region

), top_region AS (

    SELECT region

    FROM regional_sales

    WHERE total_sales > (SELECT SUM(total_sales)/10 FROM resional_sales)

)

SELECT region, 

       product, 

       SUM(quantity) AS product_units,

       SUM(amount) AS product_sales

FROM orders

WHERE region IN(SELECT region FROM top_regions)

GROUP BY region, product;

这个例子就是首先定义了regional_sales 和 top_regions 两个辅助语句,regional_sale算出每个区域的总销售量,top_regions算出销售量中占总销售量10%的所有地区,主查询语句通过辅助语句与orders表关联,算出了顶级区域每件商品的销售量和销售额。

递归查询使用CTE:

WITH查询的一个属性 RECURSIVE(递归), 使用RECURSIVE属性可以引用自己的输出,实现递归,一般用于层次结构和树状结构的应用场景。

WITH recursive t (x) AS (

    select 1

    union

    select x + 1

    from t

    where x < 5

)select SUM(x) FROM t;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值