Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Beaker s.a. am Januar 06, 2025, 18:25:10

Titel: durchschnittlicher Abstand
Beitrag von: Beaker s.a. am Januar 06, 2025, 18:25:10
Hallo,

In einer n:m gibt es ein Feld, in dem es drei Werte (0, 1 ,2) geben kann.
Die Tabelle ist nach PK sortiert, die Werte daher in "zufälliger" Reihenfolge.
Ich möchte nun für jede Kombi der beiden FK und jeden Wert den durchschnitt-
lichen Abstand der einzelnen Werte berechnen, - es reicht eine Abfrage für
einen einzelnen Wert.
Das durchschnittlich Auftreten ist ja nicht schwer zu berechnen
Anzahl der DS mit Wert / Anzahl DS gesamt.

Ich bräuchte aber den durchschnittlichen Abstand, Beispiel

das Feld hat die Werte:
2 / 0 / 1 / 2 / 2 / 0 / 2 (hier horizontal wg. Platz)

die Abstände der 0 wären dann 2 und 4 (die Zählung beginnt mit 1 beim nächsten
DS)
der Durchschnitt wäre hier also 3

In dieser Folge 1 / 2 / 0 / 0 / 2 / 0
wären die Abstände 3, 1, 2; durchschnittl. Abstand = 2

Geht das in einer Abfrage? Habe da keine Idee.

Oder geht das nur in VBA mit einer Schleife?

gruss ekkehard
Titel: Re: durchschnittlicher Abstand
Beitrag von: Bitsqueezer am Januar 06, 2025, 21:54:00
Hallo,

vielleicht geht es ja nur mir so - aber ich habe Deine Abstandsgeschichte nicht verstanden.
Also vor der 0 steht eine 2, da könnte ich mir jetzt die 2 vorstellen. Woher kommt die 4? Ich sehe eine 1 daneben. Der Abstand wäre also 1.
Was für eine Zählung?

Sorry, da blicke ich nicht durch.

Gruß

Christian
Titel: Re: durchschnittlicher Abstand
Beitrag von: Beaker s.a. am Januar 07, 2025, 14:12:13
Hallo Christian,

Danke für deine Reaktion und Rückfrage.
Ich habe mal ein Bild drangehängt - hoffe du kannst die freihändig eingefügten
Zahlen (Abstände) erkennen.
Im Prinzip ist das eine laufende Nummerierung zwischen zwei 0en (1en oder 2en),
das nächsten Auftreten wird mitgezählt, und beginnt dann wieder bei 1.
Im Bild sind als Beispiel nur die 0en (grün) berücksichtigt.
Das Ergebnis, also der durchschnittliche Abstand, in diesem Fall wäre
(2+2+2+3+1+4)/6 = 2,33

Hoffentlich ist mein Anliegen jetzt verständlicher rübergekommen.

gruss ekkehard
Titel: Re: durchschnittlicher Abstand
Beitrag von: Josef P. am Januar 07, 2025, 14:40:26
Hallo!

ZitatIm Prinzip ist das eine laufende Nummerierung zwischen zwei 0en

Entspricht das dieser Aussage:
(die Anzahl der Datensätze vor dem jeweiligen Datensatz, solange es keine 0 ist) + 1
bzw.
(die Anzahl der Datensätze ab der letzten 0 bzw. vor dem aktuellen Datensatz, solange keine 0 davor existiert) + 1

SELECT
   T.id, T.Z
   , (
         select Count(*) from DeineTabelle as Z
         where Z.id < T.id
           and (Z.id > (select Max(ID) from DeineTabelle as X where X.id < T.id and X.Z = 0)
                OR (select Max(ID) from DeineTabelle as X where X.id < T.id and X.Z = 0) IS NULL
           )
    ) + 1 as Abstand
FROM DeineTabelle as T
ORDER BY T.id;

Anm.:
id = Autowert bzw. das Feld, das die Sortierung vorgibt.
Z = das Feld mit den Zahlen 0-2.

Gruß
Josef
Titel: Re: durchschnittlicher Abstand
Beitrag von: Beaker s.a. am Januar 07, 2025, 17:53:59
Hallo Josef,

An diesen Formulierungen des Problems erkennt man den echten Profi, danke.
Ja, so kann man es ausdrücken.
Werde es gleich mal ausprobieren umzusetzen, - melde mich.

gruss ekkehard
Titel: Re: durchschnittlicher Abstand
Beitrag von: Beaker s.a. am Januar 07, 2025, 18:58:58
@Josef

Habe deine Abfrage mit meinen Objektnamen eingerichtet und funzt, -
vielen Dank.
Ich muss jetzt nur noch etwas Zeit in das vollständige Verständnis
investieren.

gruss ekkehard