环境
系统平台: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;
1400

被折叠的 条评论
为什么被折叠?



