Berechnung der durchschnittlichen Differenz eines Zahlensatzfeldes von einem Datensatz zum nächsten

daniel123

Benutzer
Beiträge
5
Hallo zusammen,

ich kämpfe schon seit einigen Stunden/Tagen mit einem Problem und hoffe bei Euch eine Lösung zu finden:

Ich habe eine Tabelle mit den Feldern:

IDNR | AUFTRAGSNUMMER | ZÄHLERSTAND | TECHNIKERNAME

IDNR: Dabei handelt es sich jeweils um einen Drucker der im Rahmen eines Servicevertrages von der IT repariert wird.

AUFTRAGSNUMMER: Die jeweilige Auftragsnummer der Reparatur

ZÄHLERSTAND: Der Zählerstand des Druckers bei der Reparatur

TECHNIKERNAME: Der Name des Technikers, der die Reparatur durchgeführt hat.

Nun soll in der Tabelle folgendes ausgewertet werden:
Wie viele Seiten druckt ein Drucker im Schnitt nach der Reparatur bei welchem Techniker bis die nächste Auftragsnummer auf die jeweilige IDNR erstellt wird.

Leider habe ich mittlerweile alle meine Möglichkeit ausgeschöpft und bin froh an einer Gedankenstütze :)

Vielen Dank schonmal für Eure Mithilfe
 
Werbung:
Hallo akretschmer,

vielen Dank für Deine Antwort.

Ich habe vielleicht vergessen, dass es sich bei der Tabelle um eine View auf eine Verknüpfte SQL Datenbank in Access handelt.

Es muss doch eine Möglichkeit geben, die Datensätze entsprechend auszuwerten?
 
Wie viele Seiten druckt ein Drucker im Schnitt nach der Reparatur bei welchem Techniker

Macht immer ein und derselbe Techniker einen speziellen Drucker wieder heile? Was ist, wenn der grad seinen 3-wöchigen Urlaub begonnen hat?

Ich denke mal, Du willst wissen, wie viele seiten ein Drucker nach einer Reparatur im Schnitt gedruckt hat, unabhängig vom Techniker, oder?

Hier eine Tabelle:

Code:
test=*# select * from drucker;
 idnr | a_nummer | pages | techniker
------+----------+-------+-----------
  1 |  1 |  100 |
  2 |  2 |  200 |
  3 |  3 |  300 |
  2 |  4 |  350 |
  3 |  5 |  450 |
  1 |  6 |  500 |
  3 |  7 |  600 |
  2 |  8 |  700 |
  1 |  9 |  800 |
(9 rows)

Pages ist der Seitenzähler, techniker habe ich jetzt ausgelassen, a_nummer die fortlaufende Auftragsnummer, die ihr vergebt. (ich benötige ein Sortiermerkmal, ein Datum ginge auch)

Code:
test=*# select idnr, pages - lag(pages) over (partition by idnr order by a_nummer) x from drucker;
 idnr |  x  
------+-----
  1 |   
  1 | 400
  1 | 300
  2 |   
  2 | 150
  2 | 350
  3 |   
  3 | 150
  3 | 150
(9 rows)

hier siehst du nun schon, wie viele Seiten seit der letzten Reparatur gedruckt wurden. Das zu aggregieren und den Durchschnitt zu berechnen ist nun einfach:

Code:
test=*# select idnr, avg(x)::numeric(5,2) from (select idnr, pages - lag(pages) over (partition by idnr order by a_nummer) x from drucker) foo group by idnr;
 idnr |  avg   
------+--------
  1 | 350.00
  2 | 250.00
  3 | 150.00
(3 rows)

Kaffee!
 
Das sieht ja wirklich super, aus! Vielen Dank schonmal :):) Das ganze ist mir schon mehr als einen Kaffee wert.



Macht immer ein und derselbe Techniker einen speziellen Drucker wieder heile? Was ist, wenn der grad seinen 3-wöchigen Urlaub begonnen hat?

Ich denke mal, Du willst wissen, wie viele seiten ein Drucker nach einer Reparatur im Schnitt gedruckt hat, unabhängig vom Techniker, oder?

Ziel ist es, herauszufinden wie sich die Drucker bei den verschiedenen Technikern verhalten, Sprich:

Repariert Techniker 1 einen Drucker druckt dieser im Schnitt: 10.000 Seiten bis zur nächsten Störung
Repariert Techniker 2 einen Drucker druckt dieser im Schnitt. 2.500 Seiten bis zur nächsten Störung

Als weiteres Sortiermerkmal gibt es das Feld [Wiederherstellungszeitpunkt]. Dabei handelt es sich um ein Datumsfeld

Danke und Grüße
 
Naja, ist nun einfach, oder? Im Select und im GROUP BY kommt nun noch der Techniker rein, anstelle der Auftragsnummer nimmst das Datum. Schaffst Du!
 
Ich weiß nicht ob das mit lag() über MS Access läuft auch wenn dahinter MS SQL steht. Probier mal akretschmer's Ansatz hinzubekommen und dann ist es nur noch Umstellen.
 
Werbung:
Hallo zusammen,

hab es über eine direkte Programmierung auf dem SQL Server hinbekommen. Danach die Tabelle mit Leserechten in ACCESS Verknüpft und alles läuft.

Vielen vielen Dank dafür :):):)
 
Zurück
Oben