Sql 在视图中使用where子句 这是我正在处理的一个问题的简化查询 但是,我希望能够在视图中添加一个WHERE子句。类似这样的东西WHERE promotion.created\u at>?
问题: 我应该如何修改视图,以便执行以下操作:Sql 在视图中使用where子句 这是我正在处理的一个问题的简化查询 但是,我希望能够在视图中添加一个WHERE子句。类似这样的东西WHERE promotion.created\u at>?,sql,postgresql,stored-procedures,view,parameter-passing,Sql,Postgresql,Stored Procedures,View,Parameter Passing,问题: 我应该如何修改视图,以便执行以下操作: CREATE VIEW summary AS SELECT sales.inventory_id, sum(sales.value) AS value, count(sales.*) AS sales_n, FROM promotion JOIN sales USING (promotion_id) GROUP BY sales.inventory_id ; 我目前无法执行此操作,因为库存id上有一个GROUP B
CREATE VIEW summary AS
SELECT sales.inventory_id,
sum(sales.value) AS value,
count(sales.*) AS sales_n,
FROM promotion
JOIN sales USING (promotion_id)
GROUP BY sales.inventory_id
;
我目前无法执行此操作,因为
库存id
上有一个GROUP BY
,因此促销。在创建的\u不会被捕获使用SQL函数,改为将时间戳作为参数:
SELECT *
FROM summary
WHERE promotion.created_at > [timestamp]
电话:
我用表别名缩短了语法。
count(*)
的作用与此处的count.*
相同。
根据实际数据类型调整返回表(…)
CREATE FUNCTION summary(_created_at timestamp)
RETURNS TABLE (inventory_id int, value bigint, sales_n int)
AS
$func$
SELECT s.inventory_id
, sum(s.value) -- AS value -- alias not visible outside function
, count(*) -- AS sales_n
FROM promotion p
JOIN sales s USING (promotion_id)
WHERE p.created_at > $1
GROUP BY s.inventory_id
$func$ LANGUAGE sql STABLE;
SELECT * FROM summary('2014-06-01 10:00');