123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <h1>Statistik sortiert nach Klassen</h1>
- <h3>Durchschnittsnoten FHR, d.h. nur Absolventen werden berücksichtigt</h3>
- Legende: Schulnummer, Anzahl der Schüler von abgehender Schule, Schnitt, davon gültige Einträge
- <br>
- <button on:click="getKlasse('A')">A-Klassen</button>
- <button on:click="getKlasse('B')">B-Klassen</button>
- <button on:click="getKlasse('C')">C-Klassen</button>
- <button on:click="getKlasse('D')">D-Klassen</button>
- <button on:click="getKlasse('E')">E-Klassen</button>
- <button on:click="getKlasse('F')">F-Klassen</button>
- <button on:click="getKlasse('G')">G-Klassen</button>
- <button on:click="getKlasse('H')">H-Klassen</button>
- {#each Object.entries(schulen) as [schule, values]}
- <br>{schule}: {values.length} -> Durchschnittsnote: {dsn(values).join(': ')}
- {/each}
- <h3>DSN nach Alter bzw. Geburtsjahr</h3>
- {#each Object.entries(dsnNachAlter) as [baujahr, values]}
- <br>{baujahr}: {values.length} -> Durchschnittsnote: {dsn(values)[0]}
- {/each}
- <h3>FOS11 nach Alter und D,M,E</h3>
- {#each Object.entries(dmeNachAlter) as [baujahr, values]}
- <br>{baujahr}: {values.length} -> Durchschnittsnote: {dme(values)}
- {/each}
- <script>
- export default {
- setup(Component) {Component.bez = 'Statistik'},
- oncreate () {
- const { knex } = this.get()
- R.objection.Model.knex(R.knex({
- client: 'mysql',
- useNullAsDefault: true,
- connection: {
- host: knex.host,
- database: knex.name,
- user: knex.user,
- password: knex.password,
- charset: 'utf8'
- }
- }))
- },
- helpers: {
- dme (a) {
- const arr = R.lodash.filter(a, a => a.abschnitte && a.abschnitte[1] && a.abschnitte[1].noten[0] && a.abschnitte[1].noten[0].NotenKrz)
- let ln = arr.length
- // console.log(arr)
- const r = arr.reduce((total, value) => {
- const noten = R.lodash.filter(value.abschnitte[1].noten, n => ['DEKO', 'EN', 'MA'].includes(n.fach.FachKrz))
- const summe = noten.reduce((t, v) => t + parseFloat(v.NotenKrz), 0)/3
- return total + summe
- }, 0)
- // console.log(r)
- return `${(r / ln)} (${ln}/${a.length})`
- },
- dsn (arr) {
- let ln = arr.length
- const r = arr.reduce((total, value) => {
- const float = parseFloat(value.DurchschnittsnoteFHR.replace(',', '.'))
- if (float) return total + float
- else ln += -1
- return total
- }, 0)
- return [(r / ln).toFixed(1), ln, arr.length]
- },
- },
- methods: {
- async getKlasse (pattern) {
- const schueler = await R.models.Schueler.query()
- .where('Klasse', 'like', pattern + '%')
- .eager('abschnitte.[noten.fach]')
- this.set({gruppe: schueler})
- }
- },
- computed: {
- schulen: ({gruppe}) => {
- const dsn = R.lodash.filter(gruppe, 'DurchschnittsnoteFHR')
- return R.lodash.groupBy(dsn, 'LSSchulNr')
- },
- dsnNachAlter: ({gruppe}) => {
- const dsn = R.lodash.filter(gruppe, 'DurchschnittsnoteFHR')
- return R.lodash.groupBy(dsn, (s) => { return new Date(s.Geburtsdatum).getFullYear()})
- // console.log(R.lodash([1,2,3,4])) //, (s) => { return new Date(s.Geburtsdatum).getFullYear()}))
- },
- dmeNachAlter: ({gruppe}) => {
- const fos11 = R.lodash.filter(gruppe, s => s['PruefOrdnung'] === 'APO-BK-11/C-FOS' && s.status === "8")
- return R.lodash.groupBy(fos11, (s) => { return new Date(s.Geburtsdatum).getFullYear()})
- }
- // }
- },
- data () {
- return {
- gruppe: null
- }
- }
- }
- </script>
|