Browse Source

Erweiterung Absolviernden Datenblatt um sos_lab_stg

master
Imo John 3 days ago
parent
commit
6ee5695d9b
  1. 2
      src-modules/module/rpta/masken/48490_felderinfo.unl
  2. 125
      src-modules/module/rpta/masken/48490_maskeninfo.unl
  3. 384
      src-modules/module/rpta/schluesseltabellen/pruefungen_im_detail_datenblatt_virtuell.sql
  4. 107
      src-modules/module/rpta/schluesseltabellen/rpta_column_layout_rpta_sos_lab_aggr_rsz_2_fuellen.sql

2
src-modules/module/rpta/masken/48490_felderinfo.unl

@ -25,7 +25,7 @@ order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today(
48508^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<<SQL>>SELECT uniquename,\ 48508^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<<SQL>>SELECT uniquename,\
caption\ caption\
FROM rpta_column_layout \ FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='rpta_sos_lab_aggr'\ where resultset_id in (select R.tid from rpta_resultset R where R.uniquename in ('rpta_sos_lab_aggr','rpta_sos_lab_stg')\
and R.systeminfo_id=7)\ and R.systeminfo_id=7)\
order by sortnr, caption\ order by sortnr, caption\
;^ ^<<SQL>>SELECT uniquename,\ ;^ ^<<SQL>>SELECT uniquename,\

125
src-modules/module/rpta/masken/48490_maskeninfo.unl

@ -39,7 +39,9 @@ select caption,\
<sqlvar name="rpta_column_layout" type="hash"><![CDATA[\ <sqlvar name="rpta_column_layout" type="hash"><![CDATA[\
select L.uniquename,\ select L.uniquename,\
L.caption,\ L.caption,\
L.whereclause\ L.whereclause,\
R.is_virtual,\
L.sortclause\
from rpta_resultset R, rpta_column_layout L\ from rpta_resultset R, rpta_column_layout L\
where L.resultset_id=R.tid\ where L.resultset_id=R.tid\
and R.uniquename='${basetable.name}'\ and R.uniquename='${basetable.name}'\
@ -54,10 +56,12 @@ C.is_aggregate,\
(case when string_not_null(CL.caption)='' then C.caption else CL.caption end) as caption,\ (case when string_not_null(CL.caption)='' then C.caption else CL.caption end) as caption,\
CL.is_visible,\ CL.is_visible,\
CL.visible_size as visible_width,\ CL.visible_size as visible_width,\
(select F.sql_code from rpta_format_code F where F.tid=CL.format_code_id) as format_sql,\ F.sql_code as format_sql,\
F.uniquename as format_uniquename,\
C.col_function as colfunction,\ C.col_function as colfunction,\
(case when string_not_null(CL.description)='' then C.description else CL.description end) as description\ (case when string_not_null(CL.description)='' then C.description else CL.description end) as description\
FROM rpta_column_layout L, rpta_column2layout CL, rpta_column C, rpta_column_type T\ FROM rpta_column_layout L, rpta_column C, rpta_column_type T, rpta_column2layout CL\
left outer join rpta_format_code F on (F.tid=CL.format_code_id)\
where L.tid=CL.layout_id\ where L.tid=CL.layout_id\
and C.tid=CL.column_id\ and C.tid=CL.column_id\
and T.tid=C.column_type\ and T.tid=C.column_type\
@ -104,6 +108,7 @@ and substring('' || tid from 5 for 1)='<<Semestertyp>>'\
<#assign semester_filter = semester_filter+ " and 1=1 and sem_der_pruefung = "+endsemester /> \ <#assign semester_filter = semester_filter+ " and 1=1 and sem_der_pruefung = "+endsemester /> \
</#if>\ </#if>\
\ \
<#if my_base_rs = "rpta_sos_lab_aggr">\
<#assign filter="<<Köpfe oder Fälle ?>>\ <#assign filter="<<Köpfe oder Fälle ?>>\
/* and sem_der_pruefung = <<Semester>> */\ /* and sem_der_pruefung = <<Semester>> */\
/* and stichtag = <<Stichtag>> */\ /* and stichtag = <<Stichtag>> */\
@ -112,6 +117,16 @@ and substring('' || tid from 5 for 1)='<<Semestertyp>>'\
/* and substring('' || sem_der_pruefung from 5 for 1)='<<Semestertyp>>' */\ /* and substring('' || sem_der_pruefung from 5 for 1)='<<Semestertyp>>' */\
/* and pstatus=<<Prüfungsstatus>> */\ /* and pstatus=<<Prüfungsstatus>> */\
" />\ " />\
<#elseif my_base_rs = "rpta_sos_lab_stg">\
<#assign filter="<<Köpfe oder Fälle ?>>\
/* and sem_d_abg_pruefung = <<Semester>> */\
/* and stichtag = <<Stichtag>> */\
/* and geschlecht = <<Geschlecht>> */\
/* and fach_sem_zahl <= <<bis Fachsemester>> */\
/* and substring('' || sem_der_pruefung from 5 for 1)='<<Semestertyp>>' */\
/* and pstatus=<<Prüfungsstatus>> */\
" />\
</#if>\
\ \
<#assign filter= filter + " and " + jahr_filter />\ <#assign filter= filter + " and " + jahr_filter />\
\ \
@ -139,107 +154,7 @@ and ${filter}\
\ \
\ \
\ \
select \ <@rpta_interpret_column_layout nonvirtualTableFilter=1/>\
--zuerst die Basisdaten:\
<#foreach column in columns>\
<#if column.coltype="physicalColumn">\
${column.srcfieldname},\
<#elseif column.coltype="logicalColumn">\
${column.colfunction} as ${column.targetfieldname},\
<#elseif column.coltype="lookupColumn">\
(${column.colfunction}) as ${column.targetfieldname},\
<#elseif column.coltype="computedColumn">\
null::decimal(19,6) as ${column.targetfieldname},\
</#if>\
</#foreach>\
null::char(1) as dummycol\
into temp tmp_stud\
from ${basetable.runtime_tablename}\
<#if rpta_column_layout.whereclause !="">\
where ${rpta_column_layout.whereclause}\
</#if>\
;\
\
\
--ergebnistabelle:\
select \
--zuerst die nicht-Aggregate:\
<#assign groupby=0 />\
<#foreach column in columns>\
<#if column.is_aggregate==0>\
<#assign groupby=groupby+1 />\
${column.targetfieldname},\
</#if>\
</#foreach>\
--dann die Aggregate:\
<#foreach column in columns>\
<#if column.is_aggregate==1 && column.coltype!="computedColumn">\
sum(${column.targetfieldname}) as ${column.targetfieldname},\
</#if>\
</#foreach>\
null::char(1) as dummycol\
into temp tmp_stud2\
from tmp_stud\
where 1=1\
/* ${<<Zusatzfilter>>} */\
group by\
<#list 1..groupby as i>${i}\
<#if i != groupby>\
,\
</#if>\
</#list>\
;\
--für Prozentwerte alle Aggregate summieren:\
select <#foreach column in columns>\
<#if column.is_aggregate==1 && column.coltype!="computedColumn">\
sum(${column.targetfieldname})::float as ${column.targetfieldname},\
</#if>\
</#foreach>\
null::char(1) as dummycol\
into temp tmp_gesamt\
from tmp_stud2\
where 1=1\
;\
\
<#assign number_of_visible_colums=0 />\
<#foreach column in columns>\
<#if column.is_visible!=0>\
<#assign number_of_visible_colums=number_of_visible_colums+1 />\
</#if>\
</#foreach>\
<#assign colnr=0 />\
select \
<#foreach column in columns>\
<#if column.is_visible!=0>\
<#assign colnr=colnr+1 />\
<#assign format_sql="" />\
<#if column.format_sql?string != "">\
<#assign format_sql=column.format_sql />\
</#if>\
\
<#if column.coltype=="computedColumn">\
(${column.colfunction})${format_sql} as ${column.targetfieldname}\
<#else>\
${column.targetfieldname}${format_sql} as ${column.targetfieldname}\
</#if>\
\
<#if colnr &lt; number_of_visible_colums>,</#if>\
</#if> --wenn sichtbar\
</#foreach>\
from tmp_stud2\
order by <#list 1..number_of_visible_colums as i>${i}\
<#if i != number_of_visible_colums>\
,\
</#if>\
</#list>\
;\
<#if basetable.is_virtual==1>\
drop table if exists ${basetable.runtime_tablename};\
</#if>\
\
\
drop table if exists tmp_stud;\
drop table if exists tmp_gesamt;\
\ \
\ \
</#if> --wenn columns?has_content^--Freemarker Template\ </#if> --wenn columns?has_content^--Freemarker Template\
@ -255,4 +170,4 @@ Column CID=0 heading_text="${column.caption}" center_heading explanation="${colu
width=${column.visible_width} text_size=60\ width=${column.visible_width} text_size=60\
</#if>\ </#if>\
</#foreach>\ </#foreach>\
@@@^Altersgruppe^Anzahl^Studienanfänger_innen als Zeitreihe, nach Gesschlecht und Fakultät in verschiedenen Visualisierungen^drop table if exists tmp_stud2; drop table if exists tmp_stud3;^^3^700^360^0^1^^ @@@^Altersgruppe^Anzahl^Studienanfänger_innen als Zeitreihe, nach Gesschlecht und Fakultät in verschiedenen Visualisierungen^drop table if exists tmp_stud2; drop table if exists tmp_stud3;^^3^700^360^^1^^

384
src-modules/module/rpta/schluesseltabellen/pruefungen_im_detail_datenblatt_virtuell.sql

@ -0,0 +1,384 @@
--freemarker template
<sqlvars>
<sqlvar name="sos_lab_stg_exists">
select sp_table_exists('sos_lab_stg') from xdummy;
</sqlvar>
<sqlvar name="fact_table_source">
select name
from sx_tables where name ='sos_lab_stg'
</sqlvar>
<sqlvar name="added_tables" type="hashsequence">
select 1::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'dim_studiengang.tid=sos_lab_stg.tid_stg' as joinclause
from sx_tables where name in ('dim_studiengang')
order by 1
</sqlvar>
<sqlvar name="fields_target" type="hashsequence"><![CDATA[
<#if fact_table_source?exists>
select tid, table_name,
name,
name as targetname
from sx_fields where table_name ='${fact_table_source}'
and currentlyused=1
<#foreach added_table in added_tables>
union
select tid,table_name,
name,
'${added_table.prefix}' || name as targetname
from sx_fields where table_name ='${added_table.name}'
and currentlyused=1
</#foreach>
order by 1
</#if>
]]>
</sqlvar>
</sqlvars>
<#if sos_lab_stg_exists==1 && fact_table_source?exists >
<#assign fact_table_target = {"name":"rpta_sos_lab_stg", "caption":"Prüfungen"}
/>
CREATE temp table tmp_tables(
name CHAR(255) ,
caption CHAR(255) ,
description CHAR(255) ,
table_type CHAR(255) ,
systeminfo_id INTEGER ,
systeminfo_orig INTEGER ,
thema CHAR(255) ,
sachgebiete_id CHAR(255)
);
CREATE temp TABLE tmp_fields(
tid serial NOT NULL,
table_name VARCHAR(255) not null,
name VARCHAR(255) not null,
caption VARCHAR(255) ,
description VARCHAR(255) ,
field_type VARCHAR(255) not null,
field_size VARCHAR(255) ,
field_not_null smallint,
currentlyused SMALLINT ,
is_primarykey SMALLINT default 0 ,
foreignkey_tab VARCHAR(255) ,
foreignkey_col VARCHAR(255) ,
foreignkey_int VARCHAR(255) ,
foreignkey_cap VARCHAR(255) ,
foreignkey_cond VARCHAR(255) ,
foreignkey_func VARCHAR(255) ,
check_integrity SMALLINT,
is_sum SMALLINT default 1,
foreignkey_uniquename VARCHAR(255)
);
update sx_fields set
is_sum=0
where table_name='sos_lab_stg'
and name!='summe';
update sx_fields set
is_sum=1
where table_name='sos_lab_stg'
and name='summe';
insert into tmp_tables (
name,
caption,
description,
table_type,
systeminfo_id,
thema,
sachgebiete_id
)
select
'${fact_table_target.name}',
'${fact_table_target.caption}',
description,
table_type,
systeminfo_id,
thema,
sachgebiete_id
from sx_tables where name='${fact_table_source}'
;
insert into tmp_fields (table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyused,
is_primarykey,
foreignkey_tab,
foreignkey_col,
foreignkey_int,
foreignkey_cap,
foreignkey_cond,
foreignkey_func,
check_integrity,
is_sum,
foreignkey_uniquename)
select '${fact_table_target.name}' as table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyused,
is_primarykey,
foreignkey_tab,
foreignkey_col,
foreignkey_int,
foreignkey_cap,
foreignkey_cond,
foreignkey_func,
check_integrity,
is_sum,
foreignkey_uniquename
from sx_fields where table_name ='${fact_table_source}'
and currentlyused=1;
<#foreach added_table in added_tables>
insert into tmp_fields (table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyused,
is_primarykey,
foreignkey_tab,
foreignkey_col,
foreignkey_int,
foreignkey_cap,
foreignkey_cond,
foreignkey_func,
check_integrity,
is_sum,
foreignkey_uniquename)
select '${fact_table_target.name}' as table_name,
'${added_table.prefix}' || name,
'${added_table.caption}: ' || caption,
description,
field_type,
field_size,
field_not_null,
currentlyused,
is_primarykey,
foreignkey_tab,
foreignkey_col,
foreignkey_int,
foreignkey_cap,
foreignkey_cond,
foreignkey_func,
check_integrity,
is_sum,
foreignkey_uniquename
from sx_fields where table_name ='${added_table.name}'
and currentlyused=1;
</#foreach>
CREATE temp TABLE tmp_rpta_resultset
(
caption varchar(255),
uniquename varchar(255),
fieldclause text,
joinclause text,
whereclause text,
systeminfo_id integer
);
insert into tmp_rpta_resultset(caption,
uniquename,
systeminfo_id)
select '${fact_table_target.caption}',
'${fact_table_target.name}',
7
;
update tmp_rpta_resultset set fieldclause='
<#foreach field_target in fields_target>
${field_target.table_name}.${field_target.name} as ${field_target.targetname},
</#foreach>
null::varchar as dummy',
joinclause='${fact_table_source}
<#foreach added_table in added_tables>
left outer join ${added_table.name} on (${added_table.joinclause})
</#foreach>',
whereclause='and stichtag=(select ST.tid from sos_stichtag ST where ST.appl_key=''2'') and abschnitt=2 and pstatus=''BE''';
select * into temp tmp_rs1
from rpta_resultset
;
update rpta_resultset set caption=T.caption,
fieldclause=T.fieldclause,
joinclause=T.joinclause,
whereclause=T.whereclause
from tmp_rpta_resultset T
where T.systeminfo_id=rpta_resultset.systeminfo_id
and T.uniquename=rpta_resultset.uniquename
;
insert into rpta_resultset(caption,
uniquename,
fieldclause,
joinclause,
whereclause,
systeminfo_id)
select caption,
uniquename,
fieldclause,
joinclause,
whereclause,
systeminfo_id
from tmp_rpta_resultset
where 0=(select count(*)
from tmp_rs1 T
where T.systeminfo_id=tmp_rpta_resultset.systeminfo_id
and T.uniquename=tmp_rpta_resultset.uniquename)
;
drop table tmp_rpta_resultset;
drop table tmp_rs1;
delete from sx_tables where name
in (select T.name from tmp_tables T);
insert into sx_tables (name,caption,description,table_type,systeminfo_id,systeminfo_orig,thema,sachgebiete_id)
select name,caption,description,table_type,systeminfo_id,systeminfo_orig,thema,sachgebiete_id
from tmp_tables;
delete from sx_fields where table_name
in (select T.table_name from tmp_fields T);
insert into sx_fields (table_name,name,caption,description,field_type,
field_size,
field_not_null,
currentlyUsed,
foreignkey_tab,
foreignkey_col,
foreignkey_cap,
foreignkey_int,
foreignkey_cond,
foreignkey_func,
check_integrity,
is_sum,
foreignkey_uniquename
)
select
F.table_name,F.name,F.caption,F.description,F.field_type,
F.field_size,
F.field_not_null,
F.currentlyUsed,
F.foreignkey_tab,
F.foreignkey_col,
F.foreignkey_cap,
F.foreignkey_int,
F.foreignkey_cond,
F.foreignkey_func,
F.check_integrity,
F.is_sum,
F.foreignkey_uniquename
from tmp_fields F;
drop table tmp_fields;
drop table tmp_tables;
--rpta_column füllen:
select * into temp tmp_rc1
from rpta_column;
create temp table tmp_rpta_column(
uniquename varchar(255) NOT NULL,
caption varchar(255),
srcfieldname varchar(255),
column_type integer,
col_function text,
is_aggregate smallint,
resultset_id integer,
description text,
custom integer default 0
);
insert into tmp_rpta_column( uniquename,
caption,
srcfieldname,
column_type,
col_function,
is_aggregate,
resultset_id,
description)
select F.name as uniquename,
coalesce(T.caption,T.name) || ' - ' || F.caption,
F.name as srcfieldname,
1 as column_type,
(case when F.is_sum=1 then 'sum' else null::varchar end) as col_function,
(case when F.is_sum=1 then 1 else 0 end) as is_aggregate,
R.tid as resultset_id,
F.description
from rpta_resultset R, sx_fields F left outer join sx_tables T on (T.name=F.table_name)
where F.table_name='${fact_table_target.name}'
and R.uniquename='${fact_table_target.name}'
and F.currentlyused=1
;
update rpta_column set
caption=T.caption,
srcfieldname=T.srcfieldname,
column_type=T.column_type,
col_function=T.col_function,
is_aggregate=T.is_aggregate,
resultset_id=R.tid,
description=T.description,
custom=T.custom
from tmp_rpta_column T, rpta_resultset R
where T.uniquename=rpta_column.uniquename
and rpta_column.resultset_id=R.tid
and R.uniquename='${fact_table_target.name}'
;
insert into rpta_column( uniquename,
caption,
srcfieldname,
column_type,
col_function,
is_aggregate,
resultset_id,
description,
custom)
select T.uniquename,
T.caption,
T.srcfieldname,
T.column_type,
T.col_function,
T.is_aggregate,
R.tid as resultset_id,
T.description,
T.custom
from tmp_rpta_column T, rpta_resultset R
where R.uniquename='${fact_table_target.name}'
and 0=(select count(*) from tmp_rc1 C
where C.uniquename=T.uniquename
and C.resultset_id=R.tid)
;
drop table tmp_rpta_column;
drop table tmp_rc1;
</#if> --wenn sos_lab_aggr_exists=1

107
src-modules/module/rpta/schluesseltabellen/rpta_column_layout_rpta_sos_lab_aggr_rsz_2_fuellen.sql

@ -0,0 +1,107 @@
--freemarker template
<#include "RPTA-Makros"/>
<sqlvars>
<sqlvar name="rpta_installed">
select count(*) from systeminfo where tid=330;
</sqlvar>
</sqlvars>
<#assign rpta_column_layout =
{"uniquename":"rpta_sos_lab_aggr_sem_rsz_2_o_b",
"caption":"Absolvierende nach RSZ+2 nach Studiengang und Semester",
"rpta_resultset":"rpta_sos_lab_stg",
"whereclause":"pstatus=''BE'' and not exists (select 1 from sos_stg_aggr A, sos_stichtag I where A.stichtag=I.tid and A.sem_rueck_beur_ein=tmp_rpta_sos_lab_stg.sem_d_abg_pruefung and A.matrikel_nr=tmp_rpta_sos_lab_stg.matrikel_nr and A.hrst=''Y'') ",
"description":"Absolvierende in RSZ+2 nach Studiengang und Semester (ohne Bochum)",
"is_virtual":1
}
/>
<#assign rpta_columns = [
{"uniquename":"sem_der_pruefung",
"caption":"Semester (Schlüssel)",
"srcfieldname":"sem_der_pruefung",
"targetfieldname":"sem_der_pruefung",
"column_type":"physicalColumn",
"col_function":"",
"is_visible":"1",
"format_code":"TEXT",
"visible_size":"5",
"is_aggregate":"0",
"description":""
},
{"uniquename":"semester_str",
"caption":"Semester Name",
"srcfieldname":"sem_der_pruefung",
"targetfieldname":"semester_str",
"column_type":"logicalColumn",
"col_function":"(case when substring(sem_der_pruefung::varchar from 5 for 1)=''2'' then ''WS '' || substring(sem_der_pruefung::varchar from 3 for 2) || ''/'' || lpad('''' || val(substring(sem_der_pruefung::varchar from 3 for 2))+1,2,''0'')
when substring(sem_der_pruefung::varchar from 5 for 1)=''1'' then ''SS '' || substring(sem_der_pruefung::varchar from 3 for 2)
else '''' end)",
"is_visible":"1",
"format_code":"",
"visible_size":"5",
"is_aggregate":"0",
"description":""
},
{"uniquename":"dim_studiengang_stg_str",
"caption":"Studienfach",
"srcfieldname":"dim_studiengang_stg_str",
"targetfieldname":"",
"column_type":"physicalColumn",
"col_function":"",
"is_visible":"1",
"format_code":"",
"visible_size":"5",
"is_aggregate":"0",
"description":"Name des Studienfachs"
},
{"uniquename":"dim_studiengang_stg",
"caption":"Studienfach (Schlüssel)",
"srcfieldname":"dim_studiengang_stg",
"targetfieldname":"",
"column_type":"physicalColumn",
"col_function":"",
"is_visible":"1",
"format_code":"",
"visible_size":"5",
"is_aggregate":"0",
"description":"Name des Studienfachs"
},
{"uniquename":"dim_studiengang_abschluss_str",
"caption":"Abschluss",
"srcfieldname":"dim_studiengang_abschluss_str",
"targetfieldname":"",
"column_type":"physicalColumn",
"col_function":"",
"is_visible":"1",
"format_code":"",
"visible_size":"5",
"is_aggregate":"0",
"description":"Abschluss"
},
{"uniquename":"summe_rsz2",
"caption":"Anzahl der Absolvierenden in RSZ +2",
"srcfieldname":"",
"targetfieldname":"summe_rsz2",
"column_type":"logicalColumn",
"col_function":"(case when fach_sem_zahl <= (dim_studiengang_regel +2) then summe else 0 end)",
"is_visible":"1",
"visible_size":"5",
"is_aggregate":"1",
"description":"Summe der Absolvierenden in RSZ +2"
},
{"uniquename":"summe",
"caption":"Anzahl der Absolvierenden",
"srcfieldname":"summe",
"column_type":"physicalColumn",
"col_function":"summe",
"is_visible":"1",
"visible_size":"5",
"is_aggregate":"1",
"description":"Summe der Absolvierenden"
}
]
/>
<#if rpta_installed==1>
<@rpta_column_layout_fuellen />
</#if>
Loading…
Cancel
Save