我为此使用了 WITH 查询,如下所示
WITH my_count AS
(
SELECT count(emp_name)
FROM employee
WHERE joined_date < '2017-11-30'::Date
AND region = 'UK'
)
INSERT INTO my_summary (property_key, month, property_value)
VALUES ('count des', '2016-11-30', my_count);
但这给了我如下错误:
错误:列“my_count”不存在
第 4 行:...rty_value)VALUES('count des','2016-11-30',my_co ...
^
SQL 状态:42703
字符:244
那么我们如何将计数保存在一个临时变量中以备后用呢?如果这不可能,还有其他方法可以实现吗?
您需要将您的
insert
陈述基于一个选择:或者使用标量选择:
此外,这两种方法都可以在没有 CTE 的情况下实施。以第一个查询为例,没有 CTE 的变体如下所示:
你最好使用 MATERIALIZED VIEW
实际上,您可以更加抽象并概括所有内容。
然后您可以
REFRESH VIEW my_summary;
在需要更新副本时使用。一些注意事项,count()
,而是avg()
。