Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

durchschnittlicher Abstand

Begonnen von Beaker s.a., Januar 06, 2025, 18:25:10

⏪ vorheriges - nächstes ⏩

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Bitsqueezer

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

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Josef P.

#3
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

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

@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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)