8 changed files with 1200 additions and 3 deletions
@ -0,0 +1,367 @@ |
|||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 1) METADATEN NUR EINMAL HOLEN |
||||||
|
-- ===================================================================== |
||||||
|
create temp table tmp_meta as |
||||||
|
select |
||||||
|
(select hs_nr from hochschulinfo) as hs_nr, |
||||||
|
(select name from hochschulinfo) as hochschulinfo_name, |
||||||
|
(select datum from systeminfo where tid=7) as datenstand, |
||||||
|
(select version from db_version where his_system='sxc') as sxc_version, |
||||||
|
'SuperX'::varchar(50) as dwh_name |
||||||
|
; |
||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 2) SCHLANKE BASISMENGE |
||||||
|
-- Nur die Spalten, die für diesen Bericht wirklich gebraucht werden. |
||||||
|
-- Das spart I/O, Temp-Speicher und Join-Kosten. |
||||||
|
-- ===================================================================== |
||||||
|
create temp table tmp_basis as |
||||||
|
select |
||||||
|
S.tid_stg, |
||||||
|
D.stg as dim_studiengang_stg, |
||||||
|
D.abschluss as dim_studiengang_abschluss, |
||||||
|
S.matrikel_nr, |
||||||
|
S.sem_rueck_beur_ein, |
||||||
|
S.sem_rueck_beur_ein_max, |
||||||
|
S.kz_rueck_beur_ein, |
||||||
|
S.summe |
||||||
|
from semester E, sos_stichtag I, sos_stg_aggr S |
||||||
|
left outer join dim_studiengang D |
||||||
|
on D.tid = S.tid_stg |
||||||
|
where E.tid=S.sem_rueck_beur_ein |
||||||
|
and E.sem_ende < today() --nicht im akt. Semester berechnen |
||||||
|
and studiengang_nr=1 |
||||||
|
and fach_nr=1 |
||||||
|
and I.tid=S.stichtag |
||||||
|
and I.appl_key='1' --Amtl. Statistik |
||||||
|
; |
||||||
|
|
||||||
|
create index ix_tmp_basis_matr_sem on tmp_basis(matrikel_nr, sem_rueck_beur_ein); |
||||||
|
create index ix_tmp_basis_matr_semmax on tmp_basis(matrikel_nr, sem_rueck_beur_ein_max); |
||||||
|
create index ix_tmp_basis_matr_stg_abs on tmp_basis(matrikel_nr, dim_studiengang_stg, dim_studiengang_abschluss); |
||||||
|
create index ix_tmp_basis_jahr on tmp_basis(sem_rueck_beur_ein); |
||||||
|
|
||||||
|
-- optional, falls in eurer DB sinnvoll: |
||||||
|
-- analyze tmp_basis; |
||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 3) VORBERECHNUNG "FOLGESEMESTER VORHANDEN?" |
||||||
|
-- Statt EXISTS/NOT EXISTS pro Zeile. |
||||||
|
-- Es reicht, vorhandene Kombinationen aus Matrikelnummer + Semester |
||||||
|
-- einmal vorzuhalten. |
||||||
|
-- |
||||||
|
-- Für die Prüfung auf das Folgesemester reicht der Bereich bis ein |
||||||
|
-- Semester über dem Berichtsende hinaus. |
||||||
|
-- ===================================================================== |
||||||
|
create temp table tmp_sem_exists as |
||||||
|
select distinct |
||||||
|
matrikel_nr, |
||||||
|
sem_rueck_beur_ein |
||||||
|
from semester E, sos_stichtag I, sos_stg_aggr S |
||||||
|
where E.tid=S.sem_rueck_beur_ein |
||||||
|
and E.sem_ende < today() --nicht im akt. Semester berechnen |
||||||
|
and I.tid=S.stichtag |
||||||
|
and I.appl_key='1' --Amtl. Statistik |
||||||
|
; |
||||||
|
|
||||||
|
create index ix_tmp_sem_exists on tmp_sem_exists(matrikel_nr, sem_rueck_beur_ein); |
||||||
|
|
||||||
|
-- optional: |
||||||
|
-- analyze tmp_sem_exists; |
||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 4) VORBERECHNUNG "HAUPTPRÜFUNG VORHANDEN?" |
||||||
|
-- Statt EXISTS pro Zeile. |
||||||
|
-- Gleiche Fachlogik wie bisher: |
||||||
|
-- match auf Matrikelnummer + Studiengang + Abschluss. |
||||||
|
-- ===================================================================== |
||||||
|
create temp table tmp_hauptpr as |
||||||
|
select distinct |
||||||
|
L.matrikel_nr, |
||||||
|
L2.stg, |
||||||
|
L2.abschluss |
||||||
|
from sos_lab_stg L |
||||||
|
join lehr_stg_ab L2 |
||||||
|
on L2.tid = L.tid_stg |
||||||
|
join sos_stichtag I |
||||||
|
on I.tid = L.stichtag |
||||||
|
where I.appl_key='2' |
||||||
|
and L.pstatus='BE' |
||||||
|
and L.abschnitt=2 |
||||||
|
; |
||||||
|
|
||||||
|
create index ix_tmp_hauptpr on tmp_hauptpr(matrikel_nr, stg, abschluss); |
||||||
|
|
||||||
|
-- optional: |
||||||
|
-- analyze tmp_hauptpr; |
||||||
|
|
||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 6) ARBEITSTABELLE tmp_stud |
||||||
|
-- Alle teuren Prüfungen jetzt per Join statt per korrelierter Subquery. |
||||||
|
-- ===================================================================== |
||||||
|
create temp table tmp_stud as |
||||||
|
select |
||||||
|
M.hs_nr, |
||||||
|
M.hochschulinfo_name, |
||||||
|
'Studienjahr'::varchar(255) as studienjahr_label, |
||||||
|
get_akad_jahr(B.sem_rueck_beur_ein,'P') as jahr, |
||||||
|
B.sem_rueck_beur_ein, |
||||||
|
B.matrikel_nr, |
||||||
|
|
||||||
|
case |
||||||
|
when substring('' || B.sem_rueck_beur_ein from 5 for 1)='2' |
||||||
|
and B.kz_rueck_beur_ein=3 |
||||||
|
then B.summe |
||||||
|
else 0 |
||||||
|
end as anfangsbestand, |
||||||
|
|
||||||
|
case |
||||||
|
|
||||||
|
when B.sem_rueck_beur_ein_max <= B.sem_rueck_beur_ein then 'nein' |
||||||
|
when add_sem(B.sem_rueck_beur_ein,1) = B.sem_rueck_beur_ein_max then 'ja' |
||||||
|
when S2.matrikel_nr is not null then 'ja' |
||||||
|
else 'nein' |
||||||
|
end as status_folgesem, |
||||||
|
|
||||||
|
case |
||||||
|
when H.matrikel_nr is not null then 1 |
||||||
|
else 0 |
||||||
|
end as hauptpruefung, |
||||||
|
|
||||||
|
case |
||||||
|
when B.kz_rueck_beur_ein in (1,2) then B.summe |
||||||
|
else 0 |
||||||
|
end as zugang, |
||||||
|
|
||||||
|
case |
||||||
|
when B.kz_rueck_beur_ein in (1) then B.summe |
||||||
|
else 0 |
||||||
|
end as zugang_ersteinschr, |
||||||
|
|
||||||
|
B.summe as summe, |
||||||
|
|
||||||
|
M.dwh_name, |
||||||
|
M.datenstand, |
||||||
|
M.sxc_version |
||||||
|
from tmp_basis B |
||||||
|
cross join tmp_meta M |
||||||
|
left join tmp_sem_exists S2 |
||||||
|
on S2.matrikel_nr = B.matrikel_nr |
||||||
|
and S2.sem_rueck_beur_ein = add_sem(B.sem_rueck_beur_ein,1) |
||||||
|
left join tmp_hauptpr H |
||||||
|
on H.matrikel_nr = B.matrikel_nr |
||||||
|
and H.stg = B.dim_studiengang_stg |
||||||
|
and H.abschluss = B.dim_studiengang_abschluss |
||||||
|
; |
||||||
|
|
||||||
|
create index ix_tmp_stud_jahr on tmp_stud(jahr); |
||||||
|
create index ix_tmp_stud_matr_sem on tmp_stud(matrikel_nr, sem_rueck_beur_ein); |
||||||
|
create index ix_tmp_stud_status_hp on tmp_stud(status_folgesem, hauptpruefung); |
||||||
|
|
||||||
|
-- optional: |
||||||
|
-- analyze tmp_stud; |
||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 7) KOPFZÄHLUNG HAUPTPRÜFUNGEN JE SEMESTER |
||||||
|
-- Jede Matrikelnummer kann im selben Semester nur einmal zählen. |
||||||
|
-- In zwei verschiedenen Semestern desselben Studienjahres aber zweimal. |
||||||
|
-- |
||||||
|
-- WICHTIG: |
||||||
|
-- Für abgang_hauptpr / abgang_ohne_hauptpr wird hier sauber klassifiziert: |
||||||
|
-- wenn eine Person im Semester irgendwo hauptpruefung=1 hat, zählt sie |
||||||
|
-- als "mit Hauptprüfung" und nicht zusätzlich auch noch als "ohne". |
||||||
|
-- ===================================================================== |
||||||
|
create temp table tmp_stud_hauptpr_sem_kopf as |
||||||
|
select |
||||||
|
hs_nr, |
||||||
|
hochschulinfo_name, |
||||||
|
studienjahr_label, |
||||||
|
jahr, |
||||||
|
sem_rueck_beur_ein, |
||||||
|
matrikel_nr, |
||||||
|
dwh_name, |
||||||
|
datenstand, |
||||||
|
sxc_version, |
||||||
|
|
||||||
|
case |
||||||
|
when max(case when hauptpruefung=1 then 1 else 0 end) = 1 |
||||||
|
then 1 else 0 |
||||||
|
end as hauptpr_summe_kopf, |
||||||
|
|
||||||
|
case |
||||||
|
when max(case when hauptpruefung=1 then 1 else 0 end) = 1 |
||||||
|
and max(case when status_folgesem='ja' then 1 else 0 end) = 1 |
||||||
|
then 1 else 0 |
||||||
|
end as hauptpr_bleibt_kopf, |
||||||
|
|
||||||
|
case |
||||||
|
when max(case when status_folgesem='nein' then 1 else 0 end) = 1 |
||||||
|
and max(case when hauptpruefung=1 then 1 else 0 end) = 1 |
||||||
|
then 1 else 0 |
||||||
|
end as abgang_hauptpr_kopf, |
||||||
|
|
||||||
|
case |
||||||
|
when max(case when status_folgesem='nein' then 1 else 0 end) = 1 |
||||||
|
and max(case when hauptpruefung=1 then 1 else 0 end) = 0 |
||||||
|
then 1 else 0 |
||||||
|
end as abgang_ohne_hauptpr_kopf |
||||||
|
|
||||||
|
from tmp_stud |
||||||
|
group by |
||||||
|
hs_nr, |
||||||
|
hochschulinfo_name, |
||||||
|
studienjahr_label, |
||||||
|
jahr, |
||||||
|
sem_rueck_beur_ein, |
||||||
|
matrikel_nr, |
||||||
|
dwh_name, |
||||||
|
datenstand, |
||||||
|
sxc_version |
||||||
|
; |
||||||
|
|
||||||
|
create index ix_tmp_stud_hauptpr_sem_kopf_jahr on tmp_stud_hauptpr_sem_kopf(jahr); |
||||||
|
create index ix_tmp_stud_hauptpr_sem_kopf_matr_sem on tmp_stud_hauptpr_sem_kopf(matrikel_nr, sem_rueck_beur_ein); |
||||||
|
|
||||||
|
-- optional: |
||||||
|
-- analyze tmp_stud_hauptpr_sem_kopf; |
||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 8) JAHRESAGGREGATION |
||||||
|
-- Zugang/Abgang/Bestände aus tmp_stud |
||||||
|
-- Hauptprüfungen aus der verdichteten Kopf-Tabelle |
||||||
|
-- ===================================================================== |
||||||
|
create temp table tmp_stud2 as |
||||||
|
select |
||||||
|
basis.hs_nr, |
||||||
|
basis.hochschulinfo_name, |
||||||
|
basis.studienjahr_label, |
||||||
|
basis.jahr, |
||||||
|
null::integer as endbestand, |
||||||
|
basis.dwh_name, |
||||||
|
basis.datenstand, |
||||||
|
basis.sxc_version, |
||||||
|
basis.abgang, |
||||||
|
coalesce(hauptpr.abgang_hauptpr,0) as abgang_hauptpr, |
||||||
|
coalesce(hauptpr.abgang_ohne_hauptpr,0) as abgang_ohne_hauptpr, |
||||||
|
coalesce(hauptpr.hauptpr_summe,0) as hauptpr_summe, |
||||||
|
coalesce(hauptpr.hauptpr_bleibt,0) as hauptpr_bleibt, |
||||||
|
basis.anfangsbestand, |
||||||
|
basis.zugang, |
||||||
|
basis.zugang_ersteinschr, |
||||||
|
basis.summe, |
||||||
|
null::char(1) as dummycol |
||||||
|
from |
||||||
|
( |
||||||
|
select |
||||||
|
hs_nr, |
||||||
|
hochschulinfo_name, |
||||||
|
studienjahr_label, |
||||||
|
jahr, |
||||||
|
dwh_name, |
||||||
|
datenstand, |
||||||
|
sxc_version, |
||||||
|
sum(case when status_folgesem='nein' then summe else 0 end) as abgang, |
||||||
|
sum(anfangsbestand) as anfangsbestand, |
||||||
|
sum(zugang) as zugang, |
||||||
|
sum(zugang_ersteinschr) as zugang_ersteinschr, |
||||||
|
sum(summe) as summe |
||||||
|
from tmp_stud |
||||||
|
group by |
||||||
|
hs_nr, |
||||||
|
hochschulinfo_name, |
||||||
|
studienjahr_label, |
||||||
|
jahr, |
||||||
|
dwh_name, |
||||||
|
datenstand, |
||||||
|
sxc_version |
||||||
|
) basis |
||||||
|
left join |
||||||
|
( |
||||||
|
select |
||||||
|
hs_nr, |
||||||
|
hochschulinfo_name, |
||||||
|
studienjahr_label, |
||||||
|
jahr, |
||||||
|
dwh_name, |
||||||
|
datenstand, |
||||||
|
sxc_version, |
||||||
|
sum(abgang_hauptpr_kopf) as abgang_hauptpr, |
||||||
|
sum(abgang_ohne_hauptpr_kopf) as abgang_ohne_hauptpr, |
||||||
|
sum(hauptpr_summe_kopf) as hauptpr_summe, |
||||||
|
sum(hauptpr_bleibt_kopf) as hauptpr_bleibt |
||||||
|
from tmp_stud_hauptpr_sem_kopf |
||||||
|
group by |
||||||
|
hs_nr, |
||||||
|
hochschulinfo_name, |
||||||
|
studienjahr_label, |
||||||
|
jahr, |
||||||
|
dwh_name, |
||||||
|
datenstand, |
||||||
|
sxc_version |
||||||
|
) hauptpr |
||||||
|
on basis.hs_nr = hauptpr.hs_nr |
||||||
|
and basis.hochschulinfo_name = hauptpr.hochschulinfo_name |
||||||
|
and basis.studienjahr_label = hauptpr.studienjahr_label |
||||||
|
and basis.jahr = hauptpr.jahr |
||||||
|
and basis.dwh_name = hauptpr.dwh_name |
||||||
|
and basis.datenstand = hauptpr.datenstand |
||||||
|
and basis.sxc_version = hauptpr.sxc_version |
||||||
|
; |
||||||
|
|
||||||
|
update tmp_stud2 |
||||||
|
set endbestand = anfangsbestand + zugang - abgang |
||||||
|
; |
||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 9) AUSGABE |
||||||
|
-- ===================================================================== |
||||||
|
select |
||||||
|
hs_nr as hs_nr, |
||||||
|
hochschulinfo_name as hochschulinfo_name, |
||||||
|
studienjahr_label as studienjahr_label, |
||||||
|
jahr as jahr, |
||||||
|
anfangsbestand as anfangsbestand, |
||||||
|
zugang as zugang, |
||||||
|
zugang_ersteinschr as zugang_ersteinschr, |
||||||
|
abgang, |
||||||
|
abgang_hauptpr, |
||||||
|
abgang_ohne_hauptpr, |
||||||
|
hauptpr_summe, |
||||||
|
hauptpr_bleibt, |
||||||
|
endbestand, |
||||||
|
dwh_name as dwh_name, |
||||||
|
datenstand as datenstand, |
||||||
|
sxc_version as sxc_version |
||||||
|
from tmp_stud2 |
||||||
|
order by |
||||||
|
1, |
||||||
|
2, |
||||||
|
3, |
||||||
|
4, |
||||||
|
5, |
||||||
|
6, |
||||||
|
7, |
||||||
|
8, |
||||||
|
9, |
||||||
|
10, |
||||||
|
11, |
||||||
|
12, |
||||||
|
13, |
||||||
|
14, |
||||||
|
15, |
||||||
|
16 |
||||||
|
; |
||||||
|
|
||||||
|
-- ===================================================================== |
||||||
|
-- 10) AUFRÄUMEN |
||||||
|
-- ===================================================================== |
||||||
|
drop table if exists tmp_stud2; |
||||||
|
drop table if exists tmp_stud_hauptpr_sem_kopf; |
||||||
|
drop table if exists tmp_stud; |
||||||
|
drop table if exists tmp_hauptpr; |
||||||
|
drop table if exists tmp_sem_exists; |
||||||
|
drop table if exists tmp_basis; |
||||||
|
drop table if exists tmp_meta; |
||||||
|
drop table if exists tmp_stud3; |
||||||
@ -0,0 +1,35 @@ |
|||||||
|
47200^Spaltenlayout^3000^350^-1^140^180^1^char^31^1^1^<<SQL>>SELECT uniquename,\ |
||||||
|
caption\ |
||||||
|
FROM rpta_column_layout \ |
||||||
|
where uniquename in ('sos_stud_zugang_abgang')\ |
||||||
|
order by sortnr, caption\ |
||||||
|
;^ ^<<SQL>>SELECT uniquename,\ |
||||||
|
caption\ |
||||||
|
FROM rpta_column_layout \ |
||||||
|
where uniquename='sos_stud_zugang_abgang';^ |
||||||
|
47201^Seit Semester^10^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^ ^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^ |
||||||
|
47202^Fächer^30^0^0^130^200^6^integer^1000^0^12^<<SQL>> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^ |
||||||
|
47203^Abschluss^40^0^0^100^200^3^char^1500^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Abschluss-Sicht' order by 3,2;^ ^ ^ |
||||||
|
47204^bis Fachsemester^1000^300^-1^200^100^1^integer^30^0^0^^ ^ ^ |
||||||
|
47205^Semestertyp^22^350^-1^140^80^1^integer^255^0^1^<<SQL>> select 1,'nur Sommersemester' from xdummy union select 2,'nur Wintersemester' from xdummy^hidden^ ^ |
||||||
|
47206^Hochschulzugangsberechtigung^120^300^-1^200^200^1^sql^30^0^1^hs_zugangsber^ ^ ^ |
||||||
|
47207^Bis Semester^20^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^ ^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^ |
||||||
|
47208^Staatsangehörigkeit^150^0^0^140^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^ ^ ^ |
||||||
|
47209^Studiengang^25^0^0^140^150^50^char^1000^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^ ^ ^ |
||||||
|
47210^Semester^100^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^hidden^ ^ |
||||||
|
47211^Stichtag^23^330^-1^130^100^1^sql^30^1^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende';^ ^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende' and appl_key='1';^ |
||||||
|
47213^Jahr^110^0^0^140^80^1^integer^30^0^13^^ ^ ^ |
||||||
|
47214^Filter Studierende^100^0^0^140^150^1^sql^20^0^1^<<SQL>> SELECT id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SOS_STUD_FILTER' order by 2;^ ^ ^ |
||||||
|
47215^Nur Endsemester^21^0^0^140^80^1^integer^30^0^1^<<SQL>> select 1,'ja' from xdummy^hidden^ ^ |
||||||
|
47216^Matrikel-Nr.^35^350^-1^140^80^1^char^30^0^13^^ ^ ^ |
||||||
|
47217^Grafik^1000^300^-1^170^150^1^char^30^0^1^<<SQL>> --freemarker template\ |
||||||
|
<#if K_VIZ_ZEITR_SEM_ANZ?exists>select uniquename, caption from viz_chart where maskeninfo_id=47140 and chart_active=1 order by 2;\ |
||||||
|
<#else>\ |
||||||
|
select 0,'Keine Visualisierungen verfügbar' from xdummy;\ |
||||||
|
</#if>^ ^<<SQL>>--freemarker template\ |
||||||
|
<#if K_VIZ_ZEITR_SEM_ANZ?exists>select uniquename, caption from viz_chart where maskeninfo_id=47140 and chart_active=1 order by 2 limit 1;\ |
||||||
|
</#if>^ |
||||||
|
47218^Köpfe oder Fälle ?^0^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle order by 2^hidden^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag = 'Köpfe';^ |
||||||
|
47219^tablestylesheet^1500^0^0^100^100^1^char^255^1^1^<<SQL>> select filename,caption from sx_stylesheets S, sx_mask_style M where S.tid=M.stylesheet_id and M.maskeninfo_id=47140 order by ord^ ^<<SQL>> select filename,caption from sx_stylesheets S, sx_mask_style M where S.tid=M.stylesheet_id and M.maskeninfo_id=47140 order by ord limit 1^ |
||||||
|
47222^Geschlecht^110^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^hidden^ ^ |
||||||
|
47223^Vergleichshochschule^100^0^0^140^80^1^char^255^0^18^^ ^<<SQL>> select '../edit/sxc/sxc_hochschule_vergleichsgruppe_list.jsp' from xdummy;^ |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
47200^47200^ |
||||||
|
47200^47201^ |
||||||
|
47200^47202^ |
||||||
|
47200^47203^ |
||||||
|
47200^47204^ |
||||||
|
47200^47205^ |
||||||
|
47200^47206^ |
||||||
|
47200^47207^ |
||||||
|
47200^47208^ |
||||||
|
47200^47209^ |
||||||
|
47200^47210^ |
||||||
|
47200^47211^ |
||||||
|
47200^47213^ |
||||||
|
47200^47214^ |
||||||
|
47200^47215^ |
||||||
|
47200^47216^ |
||||||
|
47200^47217^ |
||||||
|
47200^47218^ |
||||||
|
47200^47219^ |
||||||
|
47200^47222^ |
||||||
|
47200^47223^ |
||||||
@ -0,0 +1,467 @@ |
|||||||
|
47200^Studierendenströme Hochschulvergleich^--Freemarker Template\ |
||||||
|
<#include "SQL_lingua_franca"/>\ |
||||||
|
<#include "SuperX_general"/>\ |
||||||
|
--\ |
||||||
|
--Autor D. Quathamer 2024\ |
||||||
|
<sqlvars>\ |
||||||
|
<sqlvar name="my_base_rs"><![CDATA[\ |
||||||
|
select R.uniquename\ |
||||||
|
from rpta_resultset R, rpta_column_layout L\ |
||||||
|
where L.resultset_id=R.tid\ |
||||||
|
and L.uniquename=<<Spaltenlayout>>;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="basetable" type="hash"><![CDATA[\ |
||||||
|
SELECT distinct T.name,\ |
||||||
|
R.is_virtual,\ |
||||||
|
name as runtime_tablename\ |
||||||
|
from sx_tables T, rpta_resultset R \ |
||||||
|
where T.name=R.uniquename\ |
||||||
|
and T.name='${my_base_rs}'\ |
||||||
|
and R.is_virtual=0\ |
||||||
|
\ |
||||||
|
union\ |
||||||
|
select R.uniquename,\ |
||||||
|
R.is_virtual,\ |
||||||
|
'tmp_' || R.uniquename as runtime_tablename\ |
||||||
|
from rpta_resultset R where R.uniquename='${my_base_rs}'\ |
||||||
|
and R.is_virtual=1\ |
||||||
|
;\ |
||||||
|
]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="rpta_resultset" type="hash"><![CDATA[\ |
||||||
|
select caption,\ |
||||||
|
uniquename,\ |
||||||
|
fieldclause,\ |
||||||
|
joinclause,\ |
||||||
|
whereclause,\ |
||||||
|
systeminfo_id\ |
||||||
|
from rpta_resultset\ |
||||||
|
where uniquename='${basetable.name}';\ |
||||||
|
\ |
||||||
|
]]></sqlvar>\ |
||||||
|
<sqlvar name="rpta_column_layout" type="hash"><![CDATA[\ |
||||||
|
select L.uniquename,\ |
||||||
|
L.caption,\ |
||||||
|
L.whereclause,\ |
||||||
|
R.is_virtual,\ |
||||||
|
L.sortclause\ |
||||||
|
from rpta_resultset R, rpta_column_layout L\ |
||||||
|
where L.resultset_id=R.tid\ |
||||||
|
and R.uniquename='${basetable.name}'\ |
||||||
|
and L.uniquename=<<Spaltenlayout>>;\ |
||||||
|
\ |
||||||
|
]]></sqlvar>\ |
||||||
|
<sqlvar name="columns" type="hashsequence"><![CDATA[\ |
||||||
|
SELECT C.srcfieldname,\ |
||||||
|
(case when string_not_null(C.targetfieldname)='' then C.srcfieldname else C.targetfieldname end) as targetfieldname,\ |
||||||
|
T.uniquename as coltype,\ |
||||||
|
C.uniquename,\ |
||||||
|
C.is_aggregate,\ |
||||||
|
(case when string_not_null(CL.caption)='' then C.caption else CL.caption end) as caption,\ |
||||||
|
CL.is_visible,\ |
||||||
|
CL.visible_size as visible_width,\ |
||||||
|
F.sql_code as format_sql,\ |
||||||
|
F.uniquename as format_uniquename,\ |
||||||
|
C.col_function as colfunction,\ |
||||||
|
(case when string_not_null(CL.description)='' then C.description else CL.description end) as description\ |
||||||
|
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\ |
||||||
|
and C.tid=CL.column_id\ |
||||||
|
and T.tid=C.column_type\ |
||||||
|
and L.uniquename=<<Spaltenlayout>>\ |
||||||
|
/* and C.uniquename in (<<Spalten>>) */\ |
||||||
|
order by CL.sortnr\ |
||||||
|
;\ |
||||||
|
]]></sqlvar>\ |
||||||
|
<sqlvar name="endsemester"><![CDATA[\ |
||||||
|
SELECT max(tid)\ |
||||||
|
from semester \ |
||||||
|
where 1=1\ |
||||||
|
/* and tid >= <<Seit Semester>> */\ |
||||||
|
/* and tid <= <<Bis Semester>> */\ |
||||||
|
<#if "<<Semestertyp>>"="1" || "<<Semestertyp>>"="2">\ |
||||||
|
and substring('' || tid from 5 for 1)='<<Semestertyp>>'\ |
||||||
|
</#if>\ |
||||||
|
;\ |
||||||
|
\ |
||||||
|
]]></sqlvar>\ |
||||||
|
<sqlvar name="vergleichsgruppen" type="hashsequence"><![CDATA[\ |
||||||
|
SELECT tid,name,uniquename,ordnr \ |
||||||
|
from sxc_hochschule_vergleichsgruppe\ |
||||||
|
where aktiv=1\ |
||||||
|
order by ordnr\ |
||||||
|
limit 2;\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
]]></sqlvar>\ |
||||||
|
</sqlvars>\ |
||||||
|
\ |
||||||
|
<#assign jahr_param="" />\ |
||||||
|
<#assign jahr_filter="1=1" />\ |
||||||
|
/* <#assign jahr_param="<<Jahr>>" /> */\ |
||||||
|
--Akad. Jahr 2022: WS + SS - Beispiel: WS 22/23 + SS 2023\ |
||||||
|
<#if jahr_param !="">\ |
||||||
|
<#assign jahr_filter="(" />\ |
||||||
|
<#assign jahr_filter=jahr_filter + "(substring('' || sem_rueck_beur_ein from 5 for 1)='2' and val(substring('' || sem_rueck_beur_ein from 1 for 4))="+jahr_param+")" />\ |
||||||
|
<#assign jahr_filter=jahr_filter + " or "/>\ |
||||||
|
<#assign jahr_filter=jahr_filter + "(substring('' || sem_rueck_beur_ein from 5 for 1)='1' and (val(substring('' || sem_rueck_beur_ein from 1 for 4))-1)="+jahr_param+")" />\ |
||||||
|
<#assign jahr_filter=jahr_filter + ")" />\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
<#assign semester_filter ="1=1\ |
||||||
|
/* and sem_rueck_beur_ein >= <<Seit Semester>> */\ |
||||||
|
/* and sem_rueck_beur_ein <= <<Bis Semester>> */\ |
||||||
|
" />\ |
||||||
|
<#if "<<Semestertyp>>"="1" || "<<Semestertyp>>"="2">\ |
||||||
|
<#assign semester_filter = semester_filter+ " and substring('' || sem_rueck_beur_ein from 5 for 1)='<<Semestertyp>>'" />\ |
||||||
|
</#if>\ |
||||||
|
<#if "<<Nur Endsemester>>"="1">\ |
||||||
|
--nur Endsemester\ |
||||||
|
<#assign semester_filter = semester_filter+ " and 1=1 and sem_rueck_beur_ein = "+endsemester /> \ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
<#assign filter="<<Köpfe oder Fälle ?>>\ |
||||||
|
/* and sem_rueck_beur_ein = <<Semester>> */\ |
||||||
|
/* and stichtag = <<Stichtag>> */\ |
||||||
|
/* and <<Hochschulzugangsberechtigung>> */\ |
||||||
|
/* and <<Hörerstatus>>*/\ |
||||||
|
/* and geschlecht = <<Geschlecht>> */\ |
||||||
|
/* and fach_sem_zahl <= <<bis Fachsemester>> */\ |
||||||
|
/* and substring('' || sem_rueck_beur_ein from 5 for 1)='<<Semestertyp>>' */\ |
||||||
|
/* and ${<<Filter Studierende>>} */\ |
||||||
|
" />\ |
||||||
|
\ |
||||||
|
<#assign filter= filter + " and " + jahr_filter />\ |
||||||
|
\ |
||||||
|
<#assign filter= filter + " and " + semester_filter />\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> \ |
||||||
|
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\ |
||||||
|
/* <#assign filter = filter + " and stg in "+Fächer.allNeededKeysList /> --<<Fächer>> */\ |
||||||
|
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in "+Abschluss.allNeededKeysList +")" /> --<<Abschluss>> */\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
create temp table tmp_sos_stud_astat as\ |
||||||
|
select dim_studiengang.tid as dim_studiengang_tid,\ |
||||||
|
dim_studiengang.stg as dim_studiengang_stg,\ |
||||||
|
dim_studiengang.stg_str as dim_studiengang_stg_str,\ |
||||||
|
dim_studiengang.stg_ktxt as dim_studiengang_stg_ktxt,\ |
||||||
|
dim_studiengang.stg_ltxt as dim_studiengang_stg_ltxt,\ |
||||||
|
dim_studiengang.stg_astat as dim_studiengang_stg_astat,\ |
||||||
|
dim_studiengang.stg_astat_str as dim_studiengang_stg_astat_str,\ |
||||||
|
dim_studiengang.stg_astgrp as dim_studiengang_stg_astgrp,\ |
||||||
|
dim_studiengang.stg_astgrp_str as dim_studiengang_stg_astgrp_str,\ |
||||||
|
dim_studiengang.vertfg as dim_studiengang_vertfg,\ |
||||||
|
dim_studiengang.vertfg_str as dim_studiengang_vertfg_str,\ |
||||||
|
dim_studiengang.schwerpunkt as dim_studiengang_schwerpunkt,\ |
||||||
|
dim_studiengang.schwerpunkt_str as dim_studiengang_schwerpunkt_str,\ |
||||||
|
dim_studiengang.pversion as dim_studiengang_pversion,\ |
||||||
|
dim_studiengang.kz_fach as dim_studiengang_kz_fach,\ |
||||||
|
dim_studiengang.kz_fach_str as dim_studiengang_kz_fach_str,\ |
||||||
|
dim_studiengang.abschluss as dim_studiengang_abschluss,\ |
||||||
|
dim_studiengang.abschluss_str as dim_studiengang_abschluss_str,\ |
||||||
|
dim_studiengang.abschluss_astat as dim_studiengang_abschluss_astat,\ |
||||||
|
dim_studiengang.abschluss_astat_str as dim_studiengang_abschluss_astat_str,\ |
||||||
|
dim_studiengang.abschlussart as dim_studiengang_abschlussart,\ |
||||||
|
dim_studiengang.abschlussart_str as dim_studiengang_abschlussart_str,\ |
||||||
|
dim_studiengang.abschluss_grp as dim_studiengang_abschluss_grp,\ |
||||||
|
dim_studiengang.abschluss_grp_str as dim_studiengang_abschluss_grp_str,\ |
||||||
|
dim_studiengang.text as dim_studiengang_text,\ |
||||||
|
dim_studiengang.regel as dim_studiengang_regel,\ |
||||||
|
dim_studiengang.stort as dim_studiengang_stort,\ |
||||||
|
dim_studiengang.stort_str as dim_studiengang_stort_str,\ |
||||||
|
dim_studiengang.fb as dim_studiengang_fb,\ |
||||||
|
dim_studiengang.fb_str as dim_studiengang_fb_str,\ |
||||||
|
dim_studiengang.lehr as dim_studiengang_lehr,\ |
||||||
|
dim_studiengang.lehr_str as dim_studiengang_lehr_str,\ |
||||||
|
dim_studiengang.stutyp as dim_studiengang_stutyp,\ |
||||||
|
dim_studiengang.stutyp_str as dim_studiengang_stutyp_str,\ |
||||||
|
dim_studiengang.stg_astat_bund as dim_studiengang_stg_astat_bund,\ |
||||||
|
dim_studiengang.stg_astat_bund_str as dim_studiengang_stg_astat_bund_str,\ |
||||||
|
dim_studiengang.abschluss_astat_bund as dim_studiengang_abschluss_astat_bund,\ |
||||||
|
dim_studiengang.abschluss_astat_bund_str as dim_studiengang_abschluss_astat_bund_str,\ |
||||||
|
dim_studiengang.stg_astat_sb as dim_studiengang_stg_astat_sb,\ |
||||||
|
dim_studiengang.stg_astat_sb_str as dim_studiengang_stg_astat_sb_str,\ |
||||||
|
dim_studiengang.fgrp as dim_studiengang_fgrp,\ |
||||||
|
dim_studiengang.fgrp_str as dim_studiengang_fgrp_str,\ |
||||||
|
dim_studiengang.sb as dim_studiengang_sb,\ |
||||||
|
dim_studiengang.sb_str as dim_studiengang_sb_str,\ |
||||||
|
dim_studiengang.abstgvnr as dim_studiengang_abstgvnr,\ |
||||||
|
dim_studiengang.pversion_uniquename as dim_studiengang_pversion_uniquename,\ |
||||||
|
dim_studiengang.pversion_kurztext as dim_studiengang_pversion_kurztext,\ |
||||||
|
dim_studiengang.pversion_drucktext as dim_studiengang_pversion_drucktext,\ |
||||||
|
dim_studiengang.unikey as dim_studiengang_unikey,\ |
||||||
|
dim_studiengang.ist_lehramt as dim_studiengang_ist_lehramt,\ |
||||||
|
--dim_studiengang.stufrm_diff_rsz as dim_studiengang_stufrm_diff_rsz,\ |
||||||
|
sos_stg_aggr.tid_stg as tid_stg,\ |
||||||
|
sos_stg_aggr.ca12_staat as ca12_staat,\ |
||||||
|
sos_stg_aggr.geschlecht as geschlecht,\ |
||||||
|
sos_stg_aggr.alter as alter,\ |
||||||
|
sos_stg_aggr.hzbart as hzbart,\ |
||||||
|
sos_stg_aggr.hmkfzkz as hmkfzkz,\ |
||||||
|
sos_stg_aggr.hmkfz as hmkfz,\ |
||||||
|
sos_stg_aggr.semkfzkz as semkfzkz,\ |
||||||
|
sos_stg_aggr.semkfz as semkfz,\ |
||||||
|
sos_stg_aggr.hzbkfzkz as hzbkfzkz,\ |
||||||
|
sos_stg_aggr.hzbkfz as hzbkfz,\ |
||||||
|
sos_stg_aggr.hrst as hrst,\ |
||||||
|
sos_stg_aggr.studiengang_nr as studiengang_nr,\ |
||||||
|
sos_stg_aggr.fach_nr as fach_nr,\ |
||||||
|
sos_stg_aggr.fach_sem_zahl as fach_sem_zahl,\ |
||||||
|
sos_stg_aggr.sem_rueck_beur_ein as sem_rueck_beur_ein,\ |
||||||
|
sos_stg_aggr.kz_rueck_beur_ein as kz_rueck_beur_ein,\ |
||||||
|
sos_stg_aggr.klinsem as klinsem,\ |
||||||
|
sos_stg_aggr.hssem as hssem,\ |
||||||
|
sos_stg_aggr.stuart as stuart,\ |
||||||
|
sos_stg_aggr.stufrm as stufrm,\ |
||||||
|
sos_stg_aggr.stichtag as stichtag,\ |
||||||
|
sos_stg_aggr.summe as summe,\ |
||||||
|
sos_stg_aggr.hzbart_int as hzbart_int,\ |
||||||
|
sos_stg_aggr.matrikel_nr as matrikel_nr,\ |
||||||
|
sos_stg_aggr.ch27_grund_beurl as ch27_grund_beurl,\ |
||||||
|
sos_stg_aggr.ch62_grund_exmatr as ch62_grund_exmatr,\ |
||||||
|
sos_stg_aggr.hzbnote as hzbnote,\ |
||||||
|
sos_stg_aggr.pseudonym as pseudonym,\ |
||||||
|
sos_stg_aggr.sem_rueck_beur_ein_max as sem_rueck_beur_ein_max,\ |
||||||
|
sos_stg_aggr.ruebeudat as ruebeudat,\ |
||||||
|
sos_stg_aggr.semgewicht as semgewicht,\ |
||||||
|
sos_stg_aggr.d_exmatr as d_exmatr,\ |
||||||
|
sos_stg_aggr.second_nationality as second_nationality,\ |
||||||
|
sos_stg_aggr.district_astat as district_astat,\ |
||||||
|
sos_stg_aggr.country_astat as country_astat,\ |
||||||
|
sos_stg_aggr.orgrole_valid_from as orgrole_valid_from,\ |
||||||
|
sos_stg_aggr.orgrole_valid_to as orgrole_valid_to,\ |
||||||
|
sos_stg_aggr.geb_gezahlt as geb_gezahlt,\ |
||||||
|
sos_stg_aggr.aktiv as aktiv,\ |
||||||
|
sos_stg_aggr.individual_number_of_semesters as individual_number_of_semesters,\ |
||||||
|
sos_stg_aggr.ersthzbkfz as ersthzbkfz,\ |
||||||
|
sos_stg_aggr.ersthzbkfzkz as ersthzbkfzkz,\ |
||||||
|
sos_stg_aggr.ersthzbart as ersthzbart,\ |
||||||
|
sos_stg_aggr.ersthzbjahr as ersthzbjahr,\ |
||||||
|
sos_stg_aggr.ersthzbnote as ersthzbnote,\ |
||||||
|
sos_stg_aggr.lepsem as lepsem,\ |
||||||
|
sos_stg_aggr.stgsemgewicht as stgsemgewicht,\ |
||||||
|
sos_stg_aggr.degree_program_id as degree_program_id,\ |
||||||
|
sos_stg_aggr.endedat as endedat,\ |
||||||
|
sos_stg_aggr.kz_rueck_beur_ein_tsg as kz_rueck_beur_ein_tsg,\ |
||||||
|
sos_stg_aggr.endedat_tsg as endedat_tsg,\ |
||||||
|
sos_stg_aggr.abmeldegrund as abmeldegrund,\ |
||||||
|
sos_stg_aggr.abmeldegrund_tsg as abmeldegrund_tsg,\ |
||||||
|
sos_stg_aggr.degree_program_uniquename as degree_program_uniquename,\ |
||||||
|
sos_stg_aggr.aktiv_intern as aktiv_intern,\ |
||||||
|
sos_stg_aggr.aktiv_intern_p as aktiv_intern_p,\ |
||||||
|
sos_k_hrst.apnr as sos_k_hrst_apnr,\ |
||||||
|
sos_k_hrst.kurz as sos_k_hrst_kurz,\ |
||||||
|
sos_k_hrst.druck as sos_k_hrst_druck,\ |
||||||
|
sos_k_hrst.astat as sos_k_hrst_astat,\ |
||||||
|
sos_k_hrst.his_hrst as sos_k_hrst_his_hrst,\ |
||||||
|
sos_k_stort.apnr as sos_k_stort_apnr,\ |
||||||
|
sos_k_stort.kurz as sos_k_stort_kurz,\ |
||||||
|
sos_k_stort.druck as sos_k_stort_druck,\ |
||||||
|
sos_k_stort.astat as sos_k_stort_astat,\ |
||||||
|
sos_k_stuart.apnr as sos_k_stuart_apnr,\ |
||||||
|
sos_k_stuart.druck as sos_k_stuart_druck,\ |
||||||
|
sos_k_stuart.astat as sos_k_stuart_astat,\ |
||||||
|
sos_k_stufrm.apnr as sos_k_stufrm_apnr,\ |
||||||
|
sos_k_stufrm.druck as sos_k_stufrm_druck,\ |
||||||
|
sos_k_stufrm.astat as sos_k_stufrm_astat,\ |
||||||
|
sos_k_stutyp.apnr as sos_k_stutyp_apnr,\ |
||||||
|
sos_k_stutyp.druck as sos_k_stutyp_druck,\ |
||||||
|
sos_k_stutyp.astat as sos_k_stutyp_astat,\ |
||||||
|
null::varchar as dummy \ |
||||||
|
from sos_stg_aggr\ |
||||||
|
left outer join dim_studiengang on (dim_studiengang.tid=sos_stg_aggr.tid_stg)\ |
||||||
|
left outer join sos_k_stort on (dim_studiengang.stort=sos_k_stort.apnr)\ |
||||||
|
left outer join sos_k_stutyp on (sos_stg_aggr.stutyp=sos_k_stutyp.apnr)\ |
||||||
|
left outer join sos_k_stuart on (sos_stg_aggr.stuart=sos_k_stuart.apnr)\ |
||||||
|
left outer join sos_k_stufrm on (sos_stg_aggr.stufrm=sos_k_stufrm.apnr)\ |
||||||
|
left outer join sos_k_hrst on (sos_stg_aggr.hrst=sos_k_hrst.apnr) \ |
||||||
|
where 1=1\ |
||||||
|
and ${filter}\ |
||||||
|
;\ |
||||||
|
\ |
||||||
|
select \ |
||||||
|
--zuerst die Basisdaten:\ |
||||||
|
(select hs_nr from hochschulinfo) as hs_nr,\ |
||||||
|
(select name from hochschulinfo) as hochschulinfo_name,\ |
||||||
|
'Studienjahr'::varchar(255) as studienjahr_label,\ |
||||||
|
get_akad_jahr(sem_rueck_beur_ein,'P') as jahr,\ |
||||||
|
case when substring('' || sem_rueck_beur_ein from 5 for 1)='2' and kz_rueck_beur_ein=3 then summe else 0 end as anfangsbestand,\ |
||||||
|
(select '' from semester where sem_beginn <= current_date and sem_ende >= current_date and semester.tid= tmp_sos_stud_astat.sem_rueck_beur_ein \ |
||||||
|
union select 'nein' where tmp_sos_stud_astat.sem_rueck_beur_ein_max <= tmp_sos_stud_astat.sem_rueck_beur_ein\ |
||||||
|
union select 'ja' where add_sem(tmp_sos_stud_astat.sem_rueck_beur_ein,1) = tmp_sos_stud_astat.sem_rueck_beur_ein_max\ |
||||||
|
union select 'ja' from xdummy where exists \ |
||||||
|
(select S2.matrikel_nr from sos_stg_aggr S2 where S2.matrikel_nr=tmp_sos_stud_astat.matrikel_nr \ |
||||||
|
and S2.sem_rueck_beur_ein=add_sem(tmp_sos_stud_astat.sem_rueck_beur_ein,1)\ |
||||||
|
)\ |
||||||
|
union select 'nein' from xdummy where not exists \ |
||||||
|
(select S2.matrikel_nr from sos_stg_aggr S2 where S2.matrikel_nr=tmp_sos_stud_astat.matrikel_nr \ |
||||||
|
and S2.sem_rueck_beur_ein=add_sem(tmp_sos_stud_astat.sem_rueck_beur_ein,1)\ |
||||||
|
) order by 1 limit 1) as status_folgesem,\ |
||||||
|
(case when exists (select L.matrikel_nr \ |
||||||
|
from sos_lab_stg L, lehr_stg_ab L2, sos_stichtag I \ |
||||||
|
where L2.tid=L.tid_stg and L.stichtag=I.tid \ |
||||||
|
and I.appl_key='2' \ |
||||||
|
and L.matrikel_nr=tmp_sos_stud_astat.matrikel_nr \ |
||||||
|
and L2.stg=tmp_sos_stud_astat.dim_studiengang_stg \ |
||||||
|
and L2.abschluss=tmp_sos_stud_astat.dim_studiengang_abschluss \ |
||||||
|
and L.pstatus='BE' \ |
||||||
|
and L.abschnitt=2) then 1 else 0 end) as hauptpruefung,\ |
||||||
|
case when kz_rueck_beur_ein in (1,2) then summe else 0 end as zugang,\ |
||||||
|
case when kz_rueck_beur_ein in (1) then summe else 0 end as zugang_ersteinschr,\ |
||||||
|
0::integer as abgang,\ |
||||||
|
summe as summe,\ |
||||||
|
0::integer as abgang_hauptpr,\ |
||||||
|
0::integer as abgang_ohne_hauptpr,\ |
||||||
|
0::integer as hauptpr_summe,\ |
||||||
|
0::integer as hauptpr_bleibt,\ |
||||||
|
null::integer as endbestand,\ |
||||||
|
'SuperX' as dwh_name,\ |
||||||
|
(select datum from systeminfo where tid=7) as datenstand,\ |
||||||
|
(select version from db_version where his_system='sxc') as sxc_version,\ |
||||||
|
null::char(1) as dummycol\ |
||||||
|
into temp tmp_stud\ |
||||||
|
from tmp_sos_stud_astat\ |
||||||
|
where 1=1 \ |
||||||
|
;\ |
||||||
|
-- select * from tmp_stud;\ |
||||||
|
\ |
||||||
|
update tmp_stud set abgang=summe where status_folgesem='nein';\ |
||||||
|
update tmp_stud set abgang_hauptpr=summe where status_folgesem='nein' and hauptpruefung=1;\ |
||||||
|
update tmp_stud set abgang_ohne_hauptpr=summe where status_folgesem='nein' and hauptpruefung=0;\ |
||||||
|
update tmp_stud set hauptpr_summe=summe where hauptpruefung=1;\ |
||||||
|
update tmp_stud set hauptpr_bleibt=summe where hauptpruefung=1 and status_folgesem='ja';\ |
||||||
|
\ |
||||||
|
--ergebnistabelle:\ |
||||||
|
select \ |
||||||
|
--zuerst die nicht-Aggregate:\ |
||||||
|
-- preparingColumns ausgeschlossen, da sie von processingColumns aggregiert werden\ |
||||||
|
-- computedColumns immer mitnehmen, da später im finalen select verarbeitet\ |
||||||
|
hs_nr,\ |
||||||
|
hochschulinfo_name,\ |
||||||
|
studienjahr_label,\ |
||||||
|
jahr,\ |
||||||
|
-- status_folgesem,\ |
||||||
|
-- hauptpruefung,\ |
||||||
|
null::integer as endbestand,\ |
||||||
|
dwh_name,\ |
||||||
|
datenstand,\ |
||||||
|
sxc_version,\ |
||||||
|
--dann die Aggregate:\ |
||||||
|
sum(abgang) as abgang,\ |
||||||
|
sum(abgang_hauptpr) as abgang_hauptpr,\ |
||||||
|
sum(abgang_ohne_hauptpr) as abgang_ohne_hauptpr,\ |
||||||
|
sum(hauptpr_summe) as hauptpr_summe,\ |
||||||
|
sum(hauptpr_bleibt) as hauptpr_bleibt,\ |
||||||
|
sum(anfangsbestand) as anfangsbestand,\ |
||||||
|
sum(zugang) as zugang,\ |
||||||
|
sum(zugang_ersteinschr) as zugang_ersteinschr,\ |
||||||
|
sum(summe) as summe,\ |
||||||
|
null::char(1) as dummycol\ |
||||||
|
into temp tmp_stud2\ |
||||||
|
from tmp_stud\ |
||||||
|
where 1=1\ |
||||||
|
group by\ |
||||||
|
1,2,3,4,5,6,7,8\ |
||||||
|
;\ |
||||||
|
update tmp_stud2 set endbestand= anfangsbestand+zugang-abgang;\ |
||||||
|
\ |
||||||
|
drop table if exists tmp_sos_stud_astat;\ |
||||||
|
drop table if exists tmp_stud;\ |
||||||
|
\ |
||||||
|
select \ |
||||||
|
hs_nr\ |
||||||
|
as hs_nr\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
hochschulinfo_name\ |
||||||
|
as hochschulinfo_name\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
studienjahr_label\ |
||||||
|
as studienjahr_label\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
jahr\ |
||||||
|
as jahr\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
anfangsbestand\ |
||||||
|
as anfangsbestand\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
zugang\ |
||||||
|
as zugang\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
zugang_ersteinschr\ |
||||||
|
as zugang_ersteinschr\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
abgang\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
abgang_hauptpr\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
abgang_ohne_hauptpr\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
hauptpr_summe\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
hauptpr_bleibt\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
endbestand\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
dwh_name\ |
||||||
|
as dwh_name\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
datenstand\ |
||||||
|
as datenstand\ |
||||||
|
\ |
||||||
|
,\ |
||||||
|
sxc_version\ |
||||||
|
as sxc_version\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
from tmp_stud2\ |
||||||
|
order by \ |
||||||
|
1\ |
||||||
|
,\ |
||||||
|
2\ |
||||||
|
,\ |
||||||
|
3\ |
||||||
|
,\ |
||||||
|
4\ |
||||||
|
,\ |
||||||
|
5\ |
||||||
|
,\ |
||||||
|
6\ |
||||||
|
,\ |
||||||
|
7\ |
||||||
|
,\ |
||||||
|
8\ |
||||||
|
,\ |
||||||
|
9\ |
||||||
|
,\ |
||||||
|
10\ |
||||||
|
,\ |
||||||
|
11\ |
||||||
|
,\ |
||||||
|
12\ |
||||||
|
,\ |
||||||
|
13\ |
||||||
|
,\ |
||||||
|
14\ |
||||||
|
,\ |
||||||
|
15\ |
||||||
|
,\ |
||||||
|
16\ |
||||||
|
;^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Studierende (Anfangsbestand, Zugang und Abgang) pro Hochschule und Studienjahr^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^ |
||||||
@ -0,0 +1 @@ |
|||||||
|
16^47200^ |
||||||
@ -0,0 +1,267 @@ |
|||||||
|
--freemarker template |
||||||
|
<#include "RPTA-Makros"/> |
||||||
|
<sqlvars> |
||||||
|
<sqlvar name="sos_stud_astat_exists"> |
||||||
|
select count(*) from rpta_resultset where uniquename='sos_stud_astat'; |
||||||
|
</sqlvar> |
||||||
|
</sqlvars> |
||||||
|
<#assign rpta_column_layout = {"uniquename":"sos_stud_zugang_abgang", |
||||||
|
"caption":"Studierende (Zugang / Abgang Hochschulvergleich)", |
||||||
|
"rpta_resultset":"sos_stud_astat", |
||||||
|
"whereclause":"", |
||||||
|
"description":"Studierende pro Jahr (Zugang, Abgang)" |
||||||
|
} |
||||||
|
/> |
||||||
|
|
||||||
|
<#assign rpta_columns = [ |
||||||
|
{"uniquename":"sos_k_stort_astat", |
||||||
|
"caption_der_spalte":"Hochschulnummer Statistik", |
||||||
|
"caption_in_ergebnistabelle":"Hochschule_ID", |
||||||
|
"srcfieldname":"sos_k_stort_astat", |
||||||
|
"column_type":"physicalColumn", |
||||||
|
"col_function":"", |
||||||
|
"is_visible":"1", |
||||||
|
"visible_size":"10", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"Amtliche Standortnummer" |
||||||
|
}, |
||||||
|
{"uniquename":"hochschulinfo_name", |
||||||
|
"caption_der_spalte":"Hochschulname", |
||||||
|
"caption_in_ergebnistabelle":"Hochschule_NAME", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"hochschulinfo_name", |
||||||
|
"column_type":"lookupColumn", |
||||||
|
"col_function":"select name from hochschulinfo", |
||||||
|
"is_visible":"1", |
||||||
|
"visible_size":"10", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"" |
||||||
|
}, |
||||||
|
{"uniquename":"studienjahr_label", |
||||||
|
"caption_der_spalte":"Studienjahr Label", |
||||||
|
"caption_in_ergebnistabelle":"Semester", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"studienjahr_label", |
||||||
|
"column_type":"logicalColumn", |
||||||
|
"col_function":"''Studienjahr''::varchar(255)", |
||||||
|
"is_visible":"1", |
||||||
|
"visible_size":"10", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"" |
||||||
|
} |
||||||
|
, |
||||||
|
{"uniquename":"jahr", |
||||||
|
"caption":"Jahr", |
||||||
|
"srcfieldname":"sem_rueck_beur_ein", |
||||||
|
"targetfieldname":"jahr", |
||||||
|
"column_type":"logicalColumn", |
||||||
|
"col_function":"get_akad_jahr(sem_rueck_beur_ein,''A'')", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"(WS + darauffolgendes SS)" |
||||||
|
}, |
||||||
|
{"uniquename":"anfangsbestand", |
||||||
|
"caption":"Anfangsbestand", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"anfangsbestand", |
||||||
|
"column_type":"logicalColumn", |
||||||
|
"col_function":"case when substring('''' || sem_rueck_beur_ein from 5 for 1)=''2'' and kz_rueck_beur_ein=3 then summe else 0 end", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Studierende im WiSe" |
||||||
|
}, |
||||||
|
{"uniquename":"status_folgesem", |
||||||
|
"caption":"Im Folgesemester eingeschrieben", |
||||||
|
"srcfieldname":"status_folgesem", |
||||||
|
"targetfieldname":"status_folgesem", |
||||||
|
"column_type":"lookupColumn", |
||||||
|
"col_function":"select '''' from semester where sem_beginn <= current_date and sem_ende >= current_date and semester.tid= tmp_sos_stud_astat.sem_rueck_beur_ein |
||||||
|
union select ''nein'' where tmp_sos_stud_astat.sem_rueck_beur_ein_max <= tmp_sos_stud_astat.sem_rueck_beur_ein |
||||||
|
union select ''ja'' where add_sem(tmp_sos_stud_astat.sem_rueck_beur_ein,1) = tmp_sos_stud_astat.sem_rueck_beur_ein_max |
||||||
|
union select ''ja'' from xdummy where exists |
||||||
|
(select S2.matrikel_nr from sos_stg_aggr S2 where S2.matrikel_nr=tmp_sos_stud_astat.matrikel_nr |
||||||
|
and S2.sem_rueck_beur_ein=add_sem(tmp_sos_stud_astat.sem_rueck_beur_ein,1) |
||||||
|
) |
||||||
|
union select ''nein'' from xdummy where not exists |
||||||
|
(select S2.matrikel_nr from sos_stg_aggr S2 where S2.matrikel_nr=tmp_sos_stud_astat.matrikel_nr |
||||||
|
and S2.sem_rueck_beur_ein=add_sem(tmp_sos_stud_astat.sem_rueck_beur_ein,1) |
||||||
|
) order by 1 limit 1", |
||||||
|
"is_visible":"0", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"Ist im Folgesem. eingeschrieben" |
||||||
|
}, |
||||||
|
{"uniquename":"hauptpruefung", |
||||||
|
"caption":"Hauptprüfung", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"hauptpruefung", |
||||||
|
"column_type":"lookupColumn", |
||||||
|
"col_function":"case when exists (select L.matrikel_nr |
||||||
|
from sos_lab_stg L, lehr_stg_ab L2, sos_stichtag I |
||||||
|
where L2.tid=L.tid_stg and L.stichtag=I.tid |
||||||
|
and I.appl_key=''2'' |
||||||
|
and L.matrikel_nr=tmp_sos_stud_astat.matrikel_nr |
||||||
|
and L2.stg=tmp_sos_stud_astat.dim_studiengang_stg |
||||||
|
and L2.abschluss=tmp_sos_stud_astat.dim_studiengang_abschluss |
||||||
|
and L.pstatus=''BE'' |
||||||
|
and L.abschnitt=2) then 1 else 0 end", |
||||||
|
"is_visible":"0", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"Hauptprüfung bestanden" |
||||||
|
}, |
||||||
|
{"uniquename":"zugang", |
||||||
|
"caption":"Zugang", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"zugang", |
||||||
|
"column_type":"logicalColumn", |
||||||
|
"col_function":"case when kz_rueck_beur_ein in (1,2) then summe else 0 end", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Studierende (Erst- und Neueinschreiber) im WiSe und SoSe" |
||||||
|
}, |
||||||
|
{"uniquename":"zugang_ersteinschr", |
||||||
|
"caption":"Zugang_Ersteinschreibung", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"zugang_ersteinschr", |
||||||
|
"column_type":"logicalColumn", |
||||||
|
"col_function":"case when kz_rueck_beur_ein in (1) then summe else 0 end", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Studierende (Ersteinschreiber) im WiSe und SoSe" |
||||||
|
}, |
||||||
|
{"uniquename":"abgang", |
||||||
|
"caption":"Abgang", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"abgang", |
||||||
|
"column_type":"computedColumn", |
||||||
|
"col_function":"case when status_folgesem=''nein'' then summe else 0 end", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Exmatrikuliert" |
||||||
|
}, |
||||||
|
{"uniquename":"summe", |
||||||
|
"caption":"Summe", |
||||||
|
"srcfieldname":"summe", |
||||||
|
"targetfieldname":"", |
||||||
|
"column_type":"physicalColumn", |
||||||
|
"col_function":"", |
||||||
|
"is_visible":"0", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"" |
||||||
|
}, |
||||||
|
{"uniquename":"abgang_hauptpr", |
||||||
|
"caption":"Abgang_mit_Hauptpruefung", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"abgang_hauptpr", |
||||||
|
"column_type":"computedColumn", |
||||||
|
"col_function":"case when status_folgesem=''nein'' and hauptpruefung=1 then summe else 0 end", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Hauptprüfung, im Folgesemester nicht eingeschrieben" |
||||||
|
}, |
||||||
|
{"uniquename":"abgang_ohne_hauptpr", |
||||||
|
"caption":"Abgang_ohne_Hauptpruefung", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"abgang_ohne_hauptpr", |
||||||
|
"column_type":"computedColumn", |
||||||
|
"col_function":"case when status_folgesem=''nein'' and hauptpruefung=0 then summe else 0 end", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Keine Hauptprüfung, im Folgesemester nicht eingeschrieben" |
||||||
|
}, |
||||||
|
{"uniquename":"hauptpr_summe", |
||||||
|
"caption":"Hauptpruefung_gesamt", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"hauptpr_summe", |
||||||
|
"column_type":"computedColumn", |
||||||
|
"col_function":"case when hauptpruefung=1 then summe else 0 end", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Hauptprüfung" |
||||||
|
}, |
||||||
|
{"uniquename":"hauptpr_bleibt", |
||||||
|
"caption":"Hauptpruefung_bleibt", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"hauptpr_bleibt", |
||||||
|
"column_type":"computedColumn", |
||||||
|
"col_function":"hauptpr_summe - abgang_hauptpr", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Hauptprüfung, im Folgesem.- eingeschrieben" |
||||||
|
}, |
||||||
|
|
||||||
|
{"uniquename":"endbestand", |
||||||
|
"caption":"Endbestand", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"endbestand", |
||||||
|
"column_type":"computedColumn", |
||||||
|
"col_function":"anfangsbestand + zugang - abgang", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"1", |
||||||
|
"description":"Endbestand (Anfangsbestand + Zugang - Abgang)" |
||||||
|
}, |
||||||
|
{"uniquename":"dwh_name", |
||||||
|
"caption":"Quellsystem", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"dwh_name", |
||||||
|
"column_type":"logicalColumn", |
||||||
|
"col_function":"''SuperX''", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"" |
||||||
|
}, |
||||||
|
{"uniquename":"datenstand", |
||||||
|
"caption":"Datenstand", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"datenstand", |
||||||
|
"column_type":"lookupColumn", |
||||||
|
"col_function":"select datum from systeminfo where tid=7", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"" |
||||||
|
}, |
||||||
|
{"uniquename":"sxc_version", |
||||||
|
"caption":"Version-Export", |
||||||
|
"srcfieldname":"", |
||||||
|
"targetfieldname":"sxc_version", |
||||||
|
"column_type":"lookupColumn", |
||||||
|
"col_function":"select version from db_version where his_system=''sxc''", |
||||||
|
"is_visible":"1", |
||||||
|
"format_code":"", |
||||||
|
"visible_size":"5", |
||||||
|
"is_aggregate":"0", |
||||||
|
"description":"" |
||||||
|
} |
||||||
|
] |
||||||
|
/> |
||||||
|
|
||||||
|
<@rpta_column_layout_fuellen /> |
||||||
Loading…
Reference in new issue