Browse Source

Überarbeitung Berechnung aktive LuF und NRW-Durchschnitt #53

sxc_0.3_Release
Imo John 7 months ago
parent
commit
9ad39f8753
  1. 4
      src-modules/module/sxc/etl/import_bestand/mwk_nrw_hochschulkennzahlen/import_bestand_mwk_nrw_hskennz.kjb
  2. 2
      src-modules/module/sxc/etl/import_bestand/mwk_nrw_hochschulkennzahlen/import_bestand_mwk_nrw_hskennz_template.ktr
  3. 129
      src-modules/module/sxc/etl/import_bestand/mwk_nrw_hochschulkennzahlen/insert_sxc_zahl_wert_nrw_schnitt.sql

4
src-modules/module/sxc/etl/import_bestand/mwk_nrw_hochschulkennzahlen/import_bestand_mwk_nrw_hskennz.kjb

@ -13,7 +13,7 @@
<parameters> <parameters>
<parameter> <parameter>
<name>PATH_TO_UPLOADFILE</name> <name>PATH_TO_UPLOADFILE</name>
<default_value>&#x2f;home&#x2f;superx&#x2f;Downloads&#x2f;stamm_all_ude.csv</default_value> <default_value>&#x2f;home&#x2f;superx&#x2f;Downloads&#x2f;stamm_all_ude_fhdo.csv</default_value>
<description/> <description/>
</parameter> </parameter>
</parameters> </parameters>
@ -361,7 +361,7 @@
<name>create tmp_sxc_zahl_wert</name> <name>create tmp_sxc_zahl_wert</name>
<description/> <description/>
<type>SQL</type> <type>SQL</type>
<sql>drop table if exists tmp_sxc_zahl_wert&#x3b;&#xa;drop table if exists tmp_feld&#x3b;&#xa;drop table if exists tmp_feld_all&#x3b;&#xa;&#xa;&#xa;create table tmp_feld &#x28;Feld varchar&#x28;255&#x29;&#x29;&#x3b;&#xa;create table tmp_feld_all &#x28;Feld varchar&#x28;255&#x29;&#x29;&#x3b;&#xa;&#xa;CREATE TABLE tmp_sxc_zahl_wert&#xa;&#x28;&#xa; tid serial,&#xa; hs_nr_str varchar&#x28;255&#x29;,&#xa; hs_nr char&#x28;40&#x29;,&#xa; kenn_zahl char&#x28;100&#x29; NOT NULL,&#xa; jahr smallint,&#xa; sem smallint,&#xa; ch110_institut char&#x28;10&#x29;,&#xa; bland integer,&#xa; sxc_bestand_id integer,&#xa; wert_str varchar&#x28;255&#x29;,&#xa; wert decimal&#x28;30,20&#x29;,&#xa; generic_dim1 char&#x28;100&#x29;,&#xa; generic_dim2 char&#x28;100&#x29;&#xa;&#x29;&#x3b;</sql> <sql>drop table if exists tmp_sxc_zahl_wert&#x3b;&#xa;drop table if exists tmp_feld&#x3b;&#xa;drop table if exists tmp_feld_all&#x3b;&#xa;&#xa;&#xa;create table tmp_feld &#x28;Feld varchar&#x28;255&#x29;&#x29;&#x3b;&#xa;create table tmp_feld_all &#x28;Feld varchar&#x28;255&#x29;&#x29;&#x3b;&#xa;&#xa;CREATE TABLE tmp_sxc_zahl_wert&#xa;&#x28;&#xa; tid serial,&#xa; hs_nr_str varchar&#x28;255&#x29;,&#xa; hs_nr char&#x28;40&#x29;,&#xa; kenn_zahl char&#x28;100&#x29; NOT NULL,&#xa; jahr smallint,&#xa; sem smallint,&#xa; ch110_institut char&#x28;10&#x29;,&#xa; bland integer,&#xa; sxc_bestand_id integer,&#xa; wert_str varchar&#x28;255&#x29;,&#xa; wert decimal&#x28;30,20&#x29;,&#xa; generic_dim1 char&#x28;100&#x29;,&#xa; generic_dim2 char&#x28;100&#x29;,&#xa; anz_hs_mit_aktivem_luf integer&#xa;&#x29;&#x3b;</sql>
<useVariableSubstitution>F</useVariableSubstitution> <useVariableSubstitution>F</useVariableSubstitution>
<sqlfromfile>F</sqlfromfile> <sqlfromfile>F</sqlfromfile>
<sqlfilename/> <sqlfilename/>

2
src-modules/module/sxc/etl/import_bestand/mwk_nrw_hochschulkennzahlen/import_bestand_mwk_nrw_hskennz_template.ktr

@ -11,7 +11,7 @@
<parameters> <parameters>
<parameter> <parameter>
<name>PATH_TO_UPLOADFILE</name> <name>PATH_TO_UPLOADFILE</name>
<default_value>&#x2f;home&#x2f;superx&#x2f;Downloads&#x2f;stamm_all_ude.csv</default_value> <default_value>&#x2f;home&#x2f;superx&#x2f;Downloads&#x2f;stamm_all_ude_fhdo.csv</default_value>
<description/> <description/>
</parameter> </parameter>
</parameters> </parameters>

129
src-modules/module/sxc/etl/import_bestand/mwk_nrw_hochschulkennzahlen/insert_sxc_zahl_wert_nrw_schnitt.sql

@ -1,4 +1,6 @@
drop table if exists tmp_nrw_durchschnitt; drop table if exists tmp_nrw_durchschnitt;
drop table if exists tmp_luf_aktiv;
drop table if exists tmp_luf_aktiv_sum;
CREATE TABLE tmp_nrw_durchschnitt CREATE TABLE tmp_nrw_durchschnitt
( (
@ -8,16 +10,21 @@ CREATE TABLE tmp_nrw_durchschnitt
nrw_durchschnitt numeric nrw_durchschnitt numeric
); );
insert into tmp_nrw_durchschnitt create table tmp_luf_aktiv
select (
jahr, hs_nr char(10),
kenn_zahl, luf char(10),
generic_dim1 as lfb, jahr integer,
case when kenn_zahl like '%_proz%' then sum(wert)/12*100 else sum(wert)/12 end as nrw_durchschnitt aktiv integer
from tmp_sxc_zahl_wert );
where hs_nr in ('1130','1480','1140','1080','1090','1100','1110','1120','0080','0121','0130','0140')
group by jahr,kenn_zahl,lfb create table tmp_luf_aktiv_sum
; (
luf char(10),
jahr integer,
aktiv_sum integer
);
delete from sxc_zahl_wert delete from sxc_zahl_wert
where where
@ -36,8 +43,7 @@ INSERT INTO sxc_zahl_wert
ch110_institut, ch110_institut,
sxc_bestand_id, sxc_bestand_id,
wert, wert,
generic_dim1, generic_dim1
generic_dim2
) )
select select
W.hs_nr, W.hs_nr,
@ -48,24 +54,105 @@ select
W.ch110_institut, W.ch110_institut,
W.sxc_bestand_id, W.sxc_bestand_id,
W.wert, W.wert,
W.generic_dim1, W.generic_dim1
D.nrw_durchschnitt
from tmp_sxc_zahl_wert W from tmp_sxc_zahl_wert W
left outer join tmp_nrw_durchschnitt D on (
W.jahr=D.jahr
and W.kenn_zahl=D.kenn_zahl
and W.generic_dim1=D.lfb
and W.sxc_bestand_id=1)
where where
hs_nr is not null hs_nr is not null
order by order by
sxc_bestand_id,1,2,3,4 sxc_bestand_id,1,2,3,4
; ;
-- Folgend wird der NRW-Durchschnitt berechnet. Dafür wird
-- 1) tmp_sxc_zahl_wert geleert und aus sxc_zahl_wert neu befüllt, damit alle Daten in die Berechnung einfließen
-- tmp_sxc_zahl_wert wird für Hilfsspalte anz_hs_mit_aktivem_luf benötigt
-- 2) Anzahl der HS mit aktivem LuF ermittelt für Nenner bei NRW-Durchschnitt
-- LuF ist aktiv wenn Studierende Köpfe > 0
-- 3) NRW-Durchschnitt in tmp_sxc_zahl_wert berechnet
-- 4) Update NRW-Durchschnitt auf sxc_zahl_wert
drop table if exists tmp_sxc_zahl_wert;
drop table if exists tmp_nrw_durchschnitt;
-- 1) tmp_sxc_zahl_wert geleert und aus sxc_zahl_wert neu befüllt
delete from tmp_sxc_zahl_wert;
insert into tmp_sxc_zahl_wert(
tid,
hs_nr,
kenn_zahl,
jahr,
sem,
ch110_institut,
sxc_bestand_id,
wert,
generic_dim1,
generic_dim2,
bland)
select
tid,
hs_nr,
kenn_zahl,
jahr,
sem,
ch110_institut,
sxc_bestand_id,
wert,
generic_dim1,
generic_dim2,
bland
from sxc_zahl_wert
;
-- 2) Anzahl der HS mit aktivem LuF ermittelt
insert into tmp_luf_aktiv
select
hs_nr,
generic_dim1,
jahr,
1
from tmp_sxc_zahl_wert
where
kenn_zahl='stud'
and wert > 0
;
insert into tmp_luf_aktiv_sum
select
luf,
jahr,
sum(aktiv) as aktiv_sum
from tmp_luf_aktiv
where hs_nr in ('1130','1480','1140','1080','1090','1100','1110','1120','0080','0121','0130','0140')
group by 1,2
;
update tmp_sxc_zahl_wert set anz_hs_mit_aktivem_luf=S.aktiv_sum
from tmp_luf_aktiv_sum S
where S.luf=tmp_sxc_zahl_wert.generic_dim1
and S.jahr=tmp_sxc_zahl_wert.jahr
;
-- 3) NRW-Durchschnitt in tmp_sxc_zahl_wert berechnet
insert into tmp_nrw_durchschnitt
select
jahr,
kenn_zahl,
generic_dim1 as lfb,
case when kenn_zahl like '%_proz%' then sum(wert)/anz_hs_mit_aktivem_luf*100 else sum(wert)/anz_hs_mit_aktivem_luf end as nrw_durchschnitt
from tmp_sxc_zahl_wert
where hs_nr in ('1130','1480','1140','1080','1090','1100','1110','1120','0080','0121','0130','0140')
group by jahr,kenn_zahl,lfb,anz_hs_mit_aktivem_luf
;
-- 4) Update NRW-Durchschnitt auf sxc_zahl_wert
update sxc_zahl_wert set generic_dim2=N.nrw_durchschnitt
from tmp_nrw_durchschnitt N
where sxc_zahl_wert.jahr=N.jahr
and sxc_zahl_wert.kenn_zahl=N.kenn_zahl
and sxc_zahl_wert.generic_dim1=N.lfb
and sxc_zahl_wert.sxc_bestand_id=1
;
drop table if exists tmp_sxc_zahl_wert;
drop table if exists tmp_nrw_durchschnitt; drop table if exists tmp_nrw_durchschnitt;
--drop table if exists tmp_luf_aktiv;
--drop table if exists tmp_luf_aktiv_sum;

Loading…
Cancel
Save