gpt4 book ai didi

sql - 在同一个select中查询多个汇总表

转载 作者:行者123 更新时间:2023-11-29 14:33:12 24 4
gpt4 key购买 nike

我有几个月度汇总表,我需要在同一个报表中查询所有这些表。我该怎么做呢?以下是我的一些想法,但这些想法行不通。

八月总结

sept_summary

八月摘要

`SELECT name, timestamp FROM aug_summary AND sept_summary AND oct_summary;` 

?

`select * from '*_summary'` 

?

最佳答案

您有多种选择来处理这个问题。

显而易见的是规范化您的数据库并将所有数据合并到包含“月”列的单个表中,以标识数据所在的月份。

这看起来像是一些手动创建的“分区”方案。因此,您的另一个选择是将其转换为使用 Postgres' built-in partitioning 的表格。

作为快速修复,您可以简单地创建对所有表执行联合的 View ,这样您在数据库中只有一次巨大的 UNION 并且您可以使用简单的 在您的报告中选择 * from summary_table

报告作业不需要更改。您只需在创建新的汇总表后更改 View (您也不需要对规范化模型或分区执行此操作)


您可以创建一个循环遍历可用表并返回每个表的内容的函数:

create function get_summary()
returns setof summary201711
as
$$
declare
l_sql text;
l_rec record;
begin
for l_rec in select schemaname, tablename
from pg_tables
where schemaname = 'public'
and tablename like 'summary%' --<< adjust this to match your pattern
loop
l_sql = format('select * from %I.%I', l_rec.schemaname, l_rec.tablename);
return query execute l_sql;
end loop;
end;
$$
language plpgsql;

returns setof summary201711 使用哪个表并不重要,因为它们都必须具有相同的结构。

一旦你有了那个函数,你就可以像这样使用它:

select *
from get_summary();

虽然不确定那会多快。我的猜测是 View (或任何形式的分区)会更快。

关于sql - 在同一个select中查询多个汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48625519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com