From 07b233bf354a29945623d1426380329ca7040eaf Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Mon, 26 May 2025 07:45:49 +0200 Subject: [PATCH] Virtuelle Tabellen und Spaltenlayouts vorberechnen #10 --- .../hilfstabellen/fill_rpta_column_layout.sql | 1 + .../hilfstabellen/fill_rpta_resultset.sql | 91 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql diff --git a/src-modules/module/rpta/hilfstabellen/fill_rpta_column_layout.sql b/src-modules/module/rpta/hilfstabellen/fill_rpta_column_layout.sql index be02c1c..6d9fb43 100644 --- a/src-modules/module/rpta/hilfstabellen/fill_rpta_column_layout.sql +++ b/src-modules/module/rpta/hilfstabellen/fill_rpta_column_layout.sql @@ -143,6 +143,7 @@ drop table if exists tmp_gesamt; --wenn columns?has_content +drop table ${column_layout.resultset_tablename}; -- Ende Schleife column_layouts --gibt es column_layouts diff --git a/src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql b/src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql new file mode 100644 index 0000000..ab9ce46 --- /dev/null +++ b/src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql @@ -0,0 +1,91 @@ +--Freemarker Template +<#include "SQL_lingua_franca"/> +<#include "SuperX_general"/> +-- +--Autor D. Quathamer 2024 + + + + + + + +<#if basetables?has_content> +<#foreach basetable in basetables> + +<#if basetable.is_virtual==0> + +drop table if exists ${basetable.runtime_tablename}; + +create temp table tmp_${basetable.runtime_tablename} as +select ${basetable.fieldclause} , +today() as creation_date +from ${basetable.joinclause} +where 1=1 +<#if basetable.whereclause != ""> +${basetable.whereclause} +; +--Summierung: +<#if basetable_columns?has_content> +<#assign groupby=0 /> +create table ${basetable.runtime_tablename} as +select +<#foreach basetable_column in basetable_columns> + +<#if basetable_column.is_sum=0> +<#assign groupby=groupby+1 /> +${basetable_column.name}, +<#else> +sum(${basetable_column.name})::float as ${basetable_column.name}, + + + +creation_date +from tmp_${basetable.runtime_tablename} +group by +<#list 1..groupby as i>${i}, + +creation_date +; + + +drop table tmp_${basetable.runtime_tablename}; + + --Ende Summierung + +--TODO: indizes +create index ix_geschlecht_dashboard_mw on ${basetable.runtime_tablename}(geschlecht); +create index ix_tid_stg_dashboard_mw on ${basetable.runtime_tablename}(tid_stg); +create index ix_sem_rueck_beur_ein_dashboard_mw on ${basetable.runtime_tablename}(sem_rueck_beur_ein); + + --Ende is_virtual=0 + + + + +