pgsql中with的用法
时间: 2024-01-09 15:21:06 浏览: 88
巧用with as 对sql语句多次利用
5星 · 资源好评率100%
在 PostgreSQL 中,WITH 关键字用于定义一个公共子句(也称为“通用表达式”),该子句可以在查询中多次引用。WITH 子句的语法如下:
```
WITH [ RECURSIVE ] alias ( column_name [, ...] ) AS (
subquery
) [, ...]
```
其中,`RECURSIVE` 表示允许递归使用 WITH 子句。`alias` 是一个别名,`column_name` 是 WITH 子句返回的列的名称,`subquery` 是一个 SELECT 语句,它返回一个结果集。
使用 WITH 子句可以让查询更加简洁,因为它允许您在查询中多次引用相同的子查询。例如,以下查询使用 WITH 子句计算了每个部门的平均工资和总工资,并将结果与部门表 JOIN:
```
WITH dept_avg_salary AS (
SELECT dept_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY dept_id
), dept_total_salary AS (
SELECT dept_id, SUM(salary) AS total_salary
FROM employees
GROUP BY dept_id
)
SELECT d.dept_name, a.avg_salary, t.total_salary
FROM departments d
JOIN dept_avg_salary a ON d.dept_id = a.dept_id
JOIN dept_total_salary t ON d.dept_id = t.dept_id;
```
在上述查询中,`dept_avg_salary` 和 `dept_total_salary` 是定义的两个公共子句,它们可以在查询中多次引用,而不需要写出两个子查询。
阅读全文