SQL:如何将多个视图合并到一个视图中?

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

我有以下观点,即在过去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(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');