Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Abfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Abfrage

    Hallo Experten!

    Ich habe diese Frage zwar schon einmal gestellt, dort habe ich diese aber sehr ungenau beschrieben, dadurch ist sehr viel Chaos entstanden und deswegen stelle ich sie jetzt gleich richtig

    Ist es möglich das mithilfe von SQL auszurechnen, wenn nur die Felder Fach, Testart, %, Punkte und PunkteMax angegeben sind?

    Beim Ergebnis1 lautet die Formel: Ergebnis1 = (Punkte / PunkteMax) * %
    Beim Ergebnis2 lautet die Formel: Ergebnis2 = AVG(Erebnis1) GROUP BY Fach GROUP BY Testart (Mir ist bewusst das man nicht 2x GROUP machen kann, aber ich weis nicht wie ich es anders darstellen soll)
    Beim Ergebnis3 lautet die Formel: Ergebnis3 = SUM(Ergebnis2) GROUP BY FACH
    Fach Testart % Punkte PunkteMax Ergebnis1 Ergebnis2 Endergebnis
    Mathe Test 10 7 10 7 7,5
    Mathe Test 10 8 10 8 93
    Mathe SMÜ 90 9 10 81 85,5
    Mathe SMÜ 90 10 10 90
    Deutsch Test 60 9 10 54 51
    Deutsch Test 60 8 10 48 77
    Deutsch SMÜ 40 7 10 28 26
    Deutsch SMÜ 40 6 10 24
    Physik Test 20 5 10 10 9
    Physik Test 20 4 10 8 53
    Physik SMÜ 80 5 10 40 44
    Physik SMÜ 80 6 10 48
    Chemie Test 10 7 10 7 7,5
    Chemie Test 10 8 10 8 93
    Chemie SMÜ 90 9 10 81 85,5
    Chemie SMÜ 90 10 10 90
    Hier noch die SQL Tabelle: http://sqlfiddle.com/#!9/e47da6

  • #2
    Bin mir nicht sicher, ob Du das so meinst, trotzdem mal inne Runde geschmissen;
    Code:
    select
      daten.`fach` Fach,
      daten.`testart` Testart,
      daten.`prozent` '%',
      daten.`punkte` Punkte,
      daten.`punktemax` PunkteMax,
      sum(daten.`punkte` / daten.`punktemax` * daten.`prozent`) Ergebnis1,
      durchschnitt.wert Ergebnis2,
      summe.wert Endergebnis
    
    from
      `meine_note` daten
    
    join (
        select `fach`, `testart`, avg(`punkte` / `punktemax` * `prozent`) wert
        from `meine_note` group by `fach`, `testart`
      ) durchschnitt
      on durchschnitt.`fach` = daten.`fach`
      and durchschnitt.`testart` = daten.`testart`
    
    join (
        select `fach`, `testart`, sum(`punkte` / `punktemax` * `prozent`) wert
        from `meine_note` group by `fach`, `testart`
      ) summe
      on summe.`fach` = daten.`fach`
      and summe.`testart` = daten.`testart`
    
    group by
      daten.`fach`,
      daten.`testart`,
      daten.`prozent`,
      daten.`punkte`,
      daten.`punktemax`,
      durchschnitt.wert,
      summe.wert
    http://sqlfiddle.com/#!9/e47da6/62
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Na dann stelle ich auch mal was zur Diskussion:

      Code:
      select 
        fach,
        sum(Ergebnis1) as Endeergebnis
      from (
        select 
          fach,        
          AVG(punkte / punktemax * prozent) as Ergebnis1
        from
          meine_note
        group by 
            fach,testart) a
      group by 
            fach;
      http://sqlfiddle.com/#!9/e47da6/83

      Kommentar


      • #4
        Sieht auch gut aus. Wenn ich M0nsti aber richtig verstanden habe, möchte er ein Ergebnis, wie in #1 mit allen Ergebnisspalten und zusätzlich zum fach auf die testart gruppiert.
        Welcher Ansatz nun der ist, den er sucht, wird nur er uns sagen können.
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Ich wusste zuvor garnicht das man etwas in 2 Gruppen einbinden kann. Jetzt habe ich das Ganze verstanden. Vielen Dank für eure Hilfe.

          Kommentar


          • #6
            Zitat von M0nsti Beitrag anzeigen
            Ich wusste zuvor garnicht das man etwas in 2 Gruppen einbinden kann. Jetzt habe ich das Ganze verstanden. Vielen Dank für eure Hilfe.
            und jetzt habe ich Dich nicht verstanden???

            Kommentar


            • #7
              Ich wollt' nicht fragen...
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar

              Lädt...
              X