<h1>Statistik sortiert nach Klassen</h1> <h3>Durchschnittsnoten FHR, d.h. nur Absolventen werden berücksichtigt</h3> Legende: Schulnummer, Anzahl der Schule von abgehender Schule, Schnitt, davon gültige Einträge <br> <button on:click="getSchueler('A')">A-Klassen</button> <button on:click="getSchueler('B')">B-Klassen</button> <button on:click="getSchueler('C')">C-Klassen</button> <button on:click="getSchueler('D')">D-Klassen</button> <button on:click="getSchueler('E')">E-Klassen</button> <button on:click="getSchueler('F')">F-Klassen</button> <button on:click="getSchueler('G')">G-Klassen</button> <button on:click="getSchueler('H')">H-Klassen</button> {#each Object.entries(schulen) as [schule, values]} <br>{schule}: {values.length} -> Durchschnittsnote: {dsn(values).join(': ')} {/each} <script> const {Schueler} = require('schild/models/Models') const { Model } = require('objection') const Knex = require('knex') const _ = require('lodash') export default { setup(Component) {Component.bez = 'Statistik'}, oncreate () { const { knex } = this.get() Model.knex(Knex({ client: 'mysql', useNullAsDefault: true, connection: { host: knex.host, database: knex.name, user: knex.user, password: knex.password, charset: 'utf8' } })) }, helpers: { 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 getSchueler (pattern) { const schueler = await Schueler.query() .where('Klasse', 'like', pattern + '%') .havingNotNull('DurchschnittsnoteFHR') this.set({schulen: _.groupBy(schueler, 'LSSchulNr')}) // console.log(schueler) } }, data () { return { schuelerx: [], schulen: {} } } } </script>