AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [SQL] Durchschnittsbewertung über Zeitraum
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Durchschnittsbewertung über Zeitraum

Ein Thema von Valle · begonnen am 14. Dez 2011 · letzter Beitrag vom 15. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#1

[SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 21:17
Datenbank: MySQL • Version: 5 • Zugriff über: Python
Hi DPler!

Wir haben ein Tabelle "bewertungen", welche eine Integer-Spalte für eine Bewertung (in Form von Schulnoten) enthält, ein Fremdschlüssel zur Zuordnung was damit bewertet wird und ein Datum mit Uhrzeit wann diese Bewertung abgegeben wurde. Ziel ist es, eine graphische Auswertung zu erstellen.

Da ein simples Auftragen der Bewertungen in ein Diagramm nur in einem Haufen von nichtssagenden, überlappenden Punkten endet, möchte ich stattdessen einen Verlauf des Durchschnitts erstellen. Jede einzelne Bewertung zieht so die Linie ein wenig mehr in ihre Richtung. Wie setze ich sowas effizient in SQL um? Oder ist es hier besser nur die Daten zu holen und auf dem Client zu verrechnen? Letztendlich brauche ich die Daten in so einer Struktur:

Code:
[<Datum>, <Durchschnitt zu dieser Zeit>], [<Datum>, <Durchschnitt zu dieser Zeit>], ...
Ob der Durchschnitt über alle Bewertungen, oder nur über zB. die letzten 100 oder die letzten 12 Monate gemacht werden soll steht außerdem zur Frage. Kommt drauf an was mehr Sinn macht. (Es handelt sich um Bewertungen wie Sauberkeit, Freundlichkeit usw.) Ich bin da offen. ^^

Ich hoffe das Problem ist einigermaßen verständlich. Würde mich freuen wenn ihr mir da auf die Sprünge helfen könnt.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 21:24
Es kommt darauf an, wie viele Daten, wie viele dieser speziellen Aggegate du brauchst und wie oft du diese benötigst.
Dies ist eine spezielle DataWarehouse-Anwendung. Hierfür gibt es spezielle Datenbanksysteme, welche nicht zeilen-, sonder spaltenorientiert speichern und Prozesse solchen Datenbestände aus einer Produktionsdatenbank zu ziehen (fortlaufens, zeitgesteuert.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 21:26
Ich kenne MySQL kaum, geht etwas in der Art

Code:
Select Datum, AVG(Wert) as Wert
from Tabelle
Group by Datum
Order By Datum
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 21:47
@mkinzler: Eigentlich sind es sehr wenige Daten. In der gesamten Tabelle befinden sich im Moment etwa 1000 Bewertungen. Für die eigentliche Auswertung pro auszuwertendem Objekt kommt allerdings nur ein Bruchteil davon in Frage. Es gibt 6 verschiedene Bewertungskriterien, die je als einzelne Spalte aufgeführt sind. Die Daten werden auch nicht wirklich häufig aufgerufen. Immer dann wenn ein Mitarbeiter diese Statistik sehen will. Es geht auch weniger darum das Problem "irgendwie" zu lösen, als zu lernen wie ich es richtig mache. Wie man hier effizient optimieren kann, wie (und ob) man das mit SQL macht usw. Der Lerneffekt ist mir wichtig. Edit:// Andere Lösungen als Python <-> MySQL stehen nicht zur Auswahl. Wäre dann auch eher Overkill.

@Bummi: Das Query funktioniert in der Tat. Ich weiß allerdings nicht so recht was ich mit den Daten anfangen soll. Eigentlich kann es rechnerisch gar nicht mehr passieren, dass der Durchschnitt einen Extremwert annimmt, sobald ein Wert davon abweicht. (sprich: mein Schnitt kann nie und nimmer 1,0 sein, wenn ich auch nur ein einziges mal keine 1 habe) Dieses Ergebnis besteht allerdings überwiegend aus ganzzahligen Werten.

Danke für eure Antworten!
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle (14. Dez 2011 um 21:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 22:31
Ich denke sosollte es klappen:

Code:
select AVG(Bewertung)
where Datum >= MinDatum
  and Datum <= MaxDatum
  and -- weitere Parameter
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 22:38
Ich vermute in diesem Fall es handelt sich um ein Integerfeld, versuch es mal mit einem Cast
Code:
AVG(Cast(Bewertung as float))
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#7

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 22:55
@p80286: Danke. Aber das schränkt nur den Zeitraum ein. Ändert an den Daten ja nichts.

@Bummi: Ein Großteil der Daten sind Ganzzahlen, nicht alle. Ein Cast ist also nicht nötig. Hier mal ein Ausschnitt der Ausgabe:

Code:
| 2011-08-17 |              4.5 |
| 2011-08-18 |                5 |
| 2011-08-19 |                4 |
| 2011-08-20 |                5 |
| 2011-08-21 |              4.8 |
| 2011-08-22 |                5 |
| 2011-08-23 |             4.25 |
| 2011-08-27 |                4 |
| 2011-08-28 |                4 |
| 2011-08-29 |                5 |
Das kann ja eigentlich keinen Sinn machen.
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 23:09
Wie gesagt, MySQL kenne ich kaum, unter MSSQL würde ich mich auf das Ergebnis verlassen.
Die Sinnhaftigkeit kann ich allein anhand der Ausgabe nicht nicht beurteilen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#9

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 23:18
Zur Sinnhaftigkeit: Das mit den Schulnoten war nur vereinfacht. Die Bewertung geht von 1 bis 5, wobei 1 das schlechteste ist. In einem Durchschnitt kann also die 5 gar nicht mehr vorkommen, wenn der Durchschnitt ohne die letzte Bewertung schon 4 war.
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: [SQL] Durchschnittsbewertung über Zeitraum

  Alt 14. Dez 2011, 23:32
Vielleicht handelt es sich ja auch um ein Missverständnis. Das Ergebnis sind jeweils Summes alle "Noten" eines Tages durch die Anzahl der Noten dieses Tages.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz