SQL:如何将多个视图合并到一个视图中?
我有以下观点,即在过去30分钟内按分钟分组请求:SQL:如何将多个视图合并到一个视图中?,sql,postgresql,Sql,Postgresql,我有以下观点,即在过去30分钟内按分钟分组请求: CREATE OR REPLACE VIEW "public"."last_thirty_minutes_stats" AS SELECT requests.endpoint_id, date_trunc('minute'::text, requests.created_at) AS "time", avg(requests.response_time) AS avg FROM requests WHERE (age
CREATE OR REPLACE VIEW "public"."last_thirty_minutes_stats" AS
SELECT requests.endpoint_id,
date_trunc('minute'::text, requests.created_at) AS "time",
avg(requests.response_time) AS avg
FROM requests
WHERE (age(now(), (requests.created_at)::timestamp with time zone) < '00:30:00'::interval)
GROUP BY requests.endpoint_id, (date_trunc('minute'::text, requests.created_at));
现在我还需要在过去的24小时内按小时分组。我是否需要编写第二个视图,或者可以使用参数自定义现有视图?谢谢。SQL函数可以用作参数化VIE。例如:
create view databases as
select * from pg_database
where not datistemplate;
select * from databases where datname ilike '%post%';
或
视图不接受参数。不过,您可以定义一个表函数。
create function databases(text default null) returns setof pg_database language sql as $$
select * from pg_database
where not datistemplate and ($1 is null or datname ilike '%'||$1||'%') $$;
select * from databases('post');