Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Mittelwert berechnen (https://www.delphipraxis.net/33153-sql-mittelwert-berechnen.html)

Hansi 2. Nov 2004 12:30


SQL Mittelwert berechnen
 
Hey,

ich möchte den Durchschnitt von Werten in einer Datenbank berechnen. Dabei sollen von einem "Startdatum" aus der Mittelwert der letzten x(Anzahl)-Werte berechnet werden.

Eingabe über Edit-Felder:
- Datum (z.B. 10.10.2004)
- Anzahl (z.B. 9)


Ausgabe z.B. in DBGrid:

10.10.2004 5,75
09.10.2004 5,84


Wie bekomme ich das mit SQL hin?

P.S. benütze zum Testen eine Paradox-Tabelle

der-C 2. Nov 2004 12:34

Re: SQL Mittelwert berechnen
 
SELECT AVG(spalte_anzahl) FROM tab WHERE spalte_datum = "irgenteindatum";

//Edit
ich sehe grad, statt WHERE bla... ist es wohl eher GROUP BY spalte_datum

Jasocul 2. Nov 2004 12:41

Re: SQL Mittelwert berechnen
 
Das group by brauchst du nur, wenn du den Durchschnitt über einen Tag haben möchtest. Deine erste Lösung müsste also schon stimmen

Hansi 2. Nov 2004 12:41

Re: SQL Mittelwert berechnen
 
Der Mittelwert soll aber nicht über die ganze Spalte berechnet werden, sondern er soll nur aus den letzten x-Datensätze den Durchschnitt berechnen. Z.B. vom 10.10.2004 die letzten 5 Tage.

Also...

10.10.2004 (Durchschnitt vom 6.10. bis 10.10.)
09.10.2004 (Durchscnitt vom 5.10. bis 9.10.)
...

Jelly 2. Nov 2004 13:44

Re: SQL Mittelwert berechnen
 
Hallo Hansi,

probiers mal ungefähr so:
SQL-Code:
SELECT AVG(datum) FROM tabelle WHERE datum >= :datum_ab
In Delphi:
Delphi-Quellcode:
qry.sql.text := 'SELECT AVG(datum) FROM tabelle WHERE datum >= :datum_ab' ;
qry.ParamByName(datum_ab).AsDateTime := date - 5 ;
qry.open ;

Hansi 2. Nov 2004 14:47

Re: SQL Mittelwert berechnen
 
Bitte postet mehr Code...

Wie kann ich die Mittelwerte in einem TDBGrid ausgeben?

Vielen Dank für Code!

Jelly 2. Nov 2004 14:57

Re: SQL Mittelwert berechnen
 
Dann stelle bitte auch deine Fragen genauer... Als wichtige Info fehlt z.B., woher du die Anzahl der Werte nimmst. Versteh ich dich richtig dass du 1000 Records hast, die alle eine Datumspalte (Datum date) und eine Wertspalte (X float) besitzen, und nun willst du eine Liste der gemittelten X-Werte gruppiert für jeden Tag?

Dann wär das z.B. dein SQL Befehl:
SQL-Code:
select Datum, avg(X) as Mittelwert
from Tabelle
group by Datum
Mehr ist da nicht. Schmeiss noch eine TDatasource Kompo auf dein Form, verbinde diese mit deiner Query. Dann noch ein DBGrid welches du mit deine Datasource verknüpfst. Jetzt brauchst du deine Query nur noch öffnen, et voilà... DA IST NICHT MEHR CODE.

Gruß,
Tom

Hansi 2. Nov 2004 15:08

Re: SQL Mittelwert berechnen
 
So dann nochmal ganz genau:

Ich habe eine Tabelle(Ergebnisse.db); deren Inhalt ungefähr so aussieht:

Datum Wert
...
08.10.2004 70
09.10.2004 90
10.10.2004 100
...

Nun soll über zwei Edit-Felder einmal das Datum und das andere Mal die Anzahl eingelesen werden.

Bsp:
Datum: 10.10.2004
Anzahl: 2

Ergebnis:
...
09.10.2004 80
10.10.2004 95
...

Jelly 2. Nov 2004 15:29

Re: SQL Mittelwert berechnen
 
Sorry, cih raffs nicht :wall:
Was ist Anzahl. Welche Datensätze sind denn für die Mittelwertbildung betroffen. Das ist das entscheidende Kriterium was du brauchst.

der-C 2. Nov 2004 15:44

Re: SQL Mittelwert berechnen
 
Wert ist für den Mittelwert

Anzahl ist die Anzahl der zurückliegenden Tage bei denen er den Durchschnittswert von "Wert" braucht
Date Wert
20.10 70
21.10 90
22.10 100

Anzahl=2, Datum = 22.10 -->
von den Tagen 22.10 und 21.10 (2 Tage) braucht er den Mittelwert von "Wert" (hier 95)

also ungefähr
SELECT AVG(Wert) From tab WHERE (datum < startdatum) AND (datum > (startdatum-Anzahl_tage))


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr.
Seite 1 von 2  1 2      

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