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 AVG mit 2 Tabellen (https://www.delphipraxis.net/80237-sql-avg-mit-2-tabellen.html)

needatip 5. Nov 2006 14:55

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

SQL AVG mit 2 Tabellen
 
Hallo
ich habe 2 Tabellen

1. Tabelle Rechnungen:
NR
Rech_Nr
Kunden_Nr

2. Tabelle Positionen:
NR
Rech_Nr
Pos_Nr
Preis

Nun möchte ich p. SQL-Befehl den durchschnittlichen Rechnungsbetrag aller Rechnungen ermitteln.
Also z.B.
1. Rechnung 20,--
2. Rechnung 40,--
3. Rechnung 60,--
4. Rechnung 100,--

Ergebnis: 55,--

Wie gehe ich vor ?

Mit
SQL-Code:
SELECT SUM(p.Preis)
 FROM Positionen p, Rechnungen r
WHERE p.Rech_Nr = r.Rech_Nr
bekomme ich die Summen der einzelnen Rechnungen.
Aber wie bekomme ich dann alle Summen der Rechnungen und davon dann den Mittelwert ?

Dax 5. Nov 2006 14:58

Re: SQL AVG mit 2 Tabellen
 
Ich denke mal mit
SQL-Code:
SELECT SUM(p.Preis) / COUNT(p.Preis)
FROM Positionen p, Rechnungen r
WHERE p.Rech_Nr = r.Rech_Nr

mkinzler 5. Nov 2006 15:00

Re: SQL AVG mit 2 Tabellen
 
Mit
SQL-Code:
SELECT SUM(p.Preis)
FROM Positionen p
bekommst du die Summe aller Rechnungen
Um die durchschnittliche Summe zu erhalten mußt du dieses durch die Anzahl der Rechnungen Teilen.

SQL-Code:
SELECT COUNT( RECHNR) from Positionen;

omata 5. Nov 2006 15:10

Re: SQL AVG mit 2 Tabellen
 
Kennt Paradox nicht AVG?

SQL-Code:
SELECT AVG(p.Preis)
FROM positionen p
INNER JOIN rechnungen r
  ON p.rech_nr = r.rech_nr
Gruss
Thorsten

needatip 5. Nov 2006 15:22

Re: SQL AVG mit 2 Tabellen
 
OK,
aber so bekomme ich den Durchschnittswert der Positionen.
Ich möchte aber den Durchsnittswert der Rechnungssummen ermitteln,
die sich nach SUM(Preis) ergeben.

Vielleicht hab ich mich auch nicht klar ausgedrückt oder hab ich hier einen Denkfehler?

mkinzler 5. Nov 2006 15:26

Re: SQL AVG mit 2 Tabellen
 
Entweder wie ich oben beschrieben oder
SQL-Code:
SELECT SUM(p.Preis) / Counr (p.Rechnr)
FROM Positionen p

needatip 5. Nov 2006 15:43

Re: SQL AVG mit 2 Tabellen
 
Rechnung1
30
20
30
1.Summe 80

Rechnung2
40
50
100
2.Summe 190

Rechnung3
40
30
20
3.Summe 90
Mittelwert der Rechnungssummen 120

Der SQL Befehl
SQL-Code:
SELECT SUM(p.Preis) / Counr (p.Rechnr)
FROM Positionen p
ergibt aber 40. (360/9) da 9 Positionen.
Ich möchte aber (Summe1 + Summe2 + Summe3 / 3) = 120.

mkinzler 5. Nov 2006 15:45

Re: SQL AVG mit 2 Tabellen
 
Dann mußt du es, wie in meinem ersten Post doch in 2 Schritten machen oder du verwendest eine temporäre Tabelle.

omata 5. Nov 2006 15:47

Re: SQL AVG mit 2 Tabellen
 
Sorry, das ich nochmal störe.
Aber genau das macht doch die Funktion AVG, deshalb die Frage ob es die in Paradox gibt.

Edit:
Ok, war gerade etwas auf dem Holzweg.
Neuer Versuch...
SQL-Code:
SELECT AVG(summen)
FROM (SELECT p.rech_nr, SUM(p.Preis) summen
      FROM positionen p
      INNER JOIN rechnungen r
        ON p.rech_nr = r.rech_nr
      GROUP BY p.rech_nr) x
Gruss
Thorsten

Meniskusschaden 5. Nov 2006 15:50

Re: SQL AVG mit 2 Tabellen
 
Ich weiss nicht, ob es mit Paradox funtioniert, aber versuche einmal folgendes:
SQL-Code:
select (avg(select sum(preis)
            from pos
            where rech.rech_nr = pos.rech_nr))
from rech


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 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