Durchschnitt berechnen

Hallo,

hab folgendes Problem, bin Access Neuling und möchte jetzt gern mal einen Durchschnitt berechnen, allerings nicht an einer Spalte sondern an einer Zeile. Bei mir steht in einer Zeile am Anfang die ID (Schlüssel) dann verschieden Zahlen und dann soll in der letzten Spalte der Durchschnitt ausgerechnet werden. Also noch mal von einem Datensatz (Reihe) soll der Durchschnitt berechnet werden.

Bitte helft mir …

Danke im Voraus

Christoph

Abfrage erstellen auf Basis Deiner Tabelle, dort neues, berechnetes Feld anlegen, bei z.B. 3 Feldern könnte das so aussehen:

NeuerFeldname: ([Feldname1] + [Feldname2] + [Feldname3]) / 3

Gruß
Stephan

hi,
wie wärs mit sowas:
select sp1, sp2, …, sp9, sp10, (sp1+sp2+…+sp9+sp10)/10 as durchschnitt from tabelle;

Gruß

J.

ohne teiler

Danke, aber soviel hab ich auch noch, bloß mein großes Problem ist der Durchschnitt, klar normalerweise alles addieren durch die Anzahl, allerdings sind es nicht immer 7 Werte es können 3 (Minimum), 4, 5 oder auch 6 sein. Wie bringe ich in diese Formel die Anzahl der vorhandenen Werte rein?? (muss doch dann mit dem Kriterium Ist nicht Null berechnet werden, oder??)

Danke

Christoph

…könnte so gehen:
select feld1, …
(feld1+feld2+…+feld10)/ (iif(feld1 is null, 0, 1)+iif(feld2 is null, 0, 1)+…iif(feld10 is null, 0, 1)) as durchschnitt
from tabelle;

Zugegeben unschön.

Tip: Wenn Du auf solche unschönen Verrenkungen bei der Abfrage Deiner Daten kommst, spricht einiges dafür, daß Dein Datenmodell fehlerhaft ist.

Gruß

J.

…tschuldigung, daß ich mich eingemischt habe und den Vorschlag mit der Abfrage und dem berechneten Feld losgelassen habe. Hab’s halt Deinen Angaben nach, ein Anfänger zu sein, gestalten wollen. Wenn Du darüberhinaus doch schon erwachsener bist, muß ich Dir halt leider auch sagen, daß Dein Datenmodell nicht und niemals stimmen kann (hat ja einer der Vorredner auch schon so gemeint). Verstehe übrigens absolut nicht, warum eine Tabelle mal 5 und dann wieder vielleicht auch mal 7 Spalten hat (das ist niemals der Job einer Tabelle, so variabel sein zu müssen - geht auch gar nicht.). Wenn zu speichernde Informationen variabel sind, dann ist das in der Tat eine Frage der richtigen Struktur und wird niemals nur auf der Ebene EINER Tabelle gelöst. Aber wo ist Dein Problem? Wenn Du zehn oder zwanzig Tabellenfelder hast, berechne doch deren Durchschnitt wie sich das gehört (Abfrage, und die dann als Formulargrundlage von mir aus) - Summe des Ganzen geteilt durch Anzahl der Faktoren. Was ist daran so abartig?

Gruß
Stephan

Hallo Christoph,

die entscheidende Frage ist, wo willst du die Daten sehen?

Falls du die Daten in einem Formular sehen willst, fügst du alle Felder ein, erstellst im Formualar ein Feld Durchschnitt, wählst dann unter Eigenschaften Steuerelementinhalt, dann auf … und dann wählst du dein Formular aus und baust eine Formel auf wie bereits in den anderen Beiträge beschrieben (feld1 + feld2 + … + feld7)/7, Dann sollte das Formular den Durchschnitt anzeigen.

Falls du das Ganze in einer Abfrage oder gar in einem Datenbankfeld sehen willst, muß man allerdings anders vorgehen.

Peter

Bitte helft mir …

Danke im Voraus

Christoph

Hallo Christoph,

nach soviel vernichtender Kritik an Deiner Datenbankstruktur muß ich Dir doch mal Hoffnung machen.

Entgegen anderslautender Kommentare in diesem Brett gibt es sehrwohl Datenbanken, die mit wechselnden Tabellenstrukturen (unterschiedliche Spaltenanzahl etc.) fertig werden (müssen!) und trotzdem wunderbar funktionieren.

Auch ich stand vor einem solchen Problem und will Dich hier nicht im Regen stehen lassen.

Wenn Du willst, schicke ich Dir eine kleine Beispiel-MDB.

Leider kann ich Dir diese Datei frühestens am Freitag abend schicken.

Ich hoffe, das geht OK?

gruss moritzbock

Hi Moritzbock,

wär mir eine große Hilfe …

Vielen Dank im Voraus

Christoph

Access versteht grundprinzipiell Tabellen als strukturierten Speicherort für strukturiert abzulegende Daten und meines Wissens als nichts anderes. Gib’ mir bitte einen kleinen Tipp, warum ich mal 5 oder mal 7 Spalten haben muß. Das geht mir gegen jeden datenbanktheoretischen Denkansatz. Bitte überzeuge mich.

Gruß
Stephan

Hi Stephan,
mach den Jungen nicht gleich so fertig - er hat doch schon geschrieben, daß er ein Neuling ist.

Er hat sich ungenau ausgedrückt, aber ich habe das so verstanden, daß die Tabelle nicht ihre Spaltenanzahl ändert, sondern daß manche Felder mal keinen Inhalt besitzen (also NULL sind).

Das geht mir
gegen jeden datenbanktheoretischen Denkansatz.

Nun ja, Access und Datenbanktheorie sind doch zwei Paar Schuh :smile:

Gruß

J.

Hi Stephan,
mach den Jungen nicht gleich so fertig - er hat doch schon
geschrieben, daß er ein Neuling ist.

Hab ja auch darauf Rücksicht genommen, und ihm die Lösung verklickert.

Nun ja, Access und Datenbanktheorie sind doch zwei Paar Schuh

Keineswegs. Ersteres ist aus letzterem entstanden.

Na ja, nun schlaf mal gut…

Gruß aus Berlin
Stephan

Über dein Datenmodell lass ich mich besser nicht auch noch aus…

Hier ist eine allgemeine Durchschnittsfunktion:

Public Function Avrg(ParamArray p())
Dim V As Double, I As Long, n As Long
 V = 0#: n = 0
 For I = LBound(p) To UBound(p)
 If Not IsNull(p(I)) Then
 V = V + p(I)
 n = n + 1
 End If
 Next I
 If n = 0 Then
 Avrg = Null
 Else
 Avrg = V / n
 End If
End Function

Also z.B.:

avg(12,Null,10.8,1.2)

ergibt 8…

Gruss aus dem Norden
Reinhard Kraasch