Skip to main content

psql how run

how run

窗口函数执行

https://www.postgresqltutorial.com/postgresql-window-function/

窗口函数始终在 JOIN 、 WHERE 、 GROUP BY 和 HAVING 子句之后以及在评估顺序中的最后一个 ORDER BY 子句

example


SELECT
group_name,
AVG (price)
FROM
products
INNER JOIN product_groups USING (group_id)
GROUP BY
group_name;

-- 如何执行的

这个 SQL 查询是用来计算每个产品组的平均价格的。查询的执行步骤如下:

  1. FROM products: 查询开始于从 products 表中选择数据。

  2. INNER JOIN product_groups USING (group_id): products 表通过 group_id 字段与 product_groups 表进行内连接(INNER JOIN)。内连接会合并两个表中的行,只保留两个表中都有匹配 group_id 的那些行。USING (group_id) 是一个连接条件,它表明 products 表和 product_groups 表中用于连接的共同列是 group_id

  3. SELECT group_name, AVG(price): 查询的选择列表包含两个列:group_nameprice 列的平均值。这里的 group_name 来自于 product_groups 表,而 price 来自于 products 表。

  4. GROUP BY group_name: 这个 GROUP BY 子句指示数据库按照 group_name 列的值对结果集进行分组。每个不同的 group_name 值都会形成一个分组,对于每个分组,数据库将计算其 price 列值的平均值(AVG(price))。

总结一下,这个查询的执行过程是:

  • 先通过 group_idproducts 表和 product_groups 表连接起来。
  • 然后,按照 product_groups 表中的 group_name 将结果集分组。
  • 对于每个组,计算 products 表中对应行的 price 列的平均值。
  • 最后,选择每个产品组的名称和对应的平均价格。

查询的结果将是一个包含两列的列表,一列是 group_name,另一列是该组中所有产品的平均价格。