Mittelwert mit Zähler
Moderator: Moderatoren
-
- ***
- Beiträge: 62
- Registriert: Do, 01.05.2008 11:33
Mittelwert mit Zähler
Hallo Leute ,
ich bastel im Moment an einer Projekt Datenbank.
diese Datenbank enthält u.a. folgende Felder
* Projekt
* start (timestamp)
* stop (timestamp)
* fertig (binär)
nun möchte ich gruppiert nach Projekt den durchschnittlichen Zeitaufwand pro Projekt ermitteln indem ich die Summe aller Zeitdifferenzen bilde und durch die Anzahl der "Fertig" Bits dividiere.
Das Gruppieren und Summieren ist nicht das Problem . Mein Problem besteht jetzt darin das ich nicht so recht herraus bekomme wie ich die "Fertig" Bits zähle, in Abhängigkeit vom Projekt.
für Hilfestellungen oder Tips wäre ich sehr dankbar
d.Z.
ich bastel im Moment an einer Projekt Datenbank.
diese Datenbank enthält u.a. folgende Felder
* Projekt
* start (timestamp)
* stop (timestamp)
* fertig (binär)
nun möchte ich gruppiert nach Projekt den durchschnittlichen Zeitaufwand pro Projekt ermitteln indem ich die Summe aller Zeitdifferenzen bilde und durch die Anzahl der "Fertig" Bits dividiere.
Das Gruppieren und Summieren ist nicht das Problem . Mein Problem besteht jetzt darin das ich nicht so recht herraus bekomme wie ich die "Fertig" Bits zähle, in Abhängigkeit vom Projekt.
für Hilfestellungen oder Tips wäre ich sehr dankbar
d.Z.
-
- *******
- Beiträge: 1763
- Registriert: Di, 03.10.2006 18:05
Re: Mittelwert mit Zähler
Hallo d.z.,
Projekte gibt es viele (z.B. Hausbau; Produktfertigung; Straßenbau; Expeditionen usw) Projekt_Möglichkeiten.
Da solltest Du uns doch verraten, welches "Projekt" Du planst. Ebenso möchte ich wissen, was das Feld "fertig" darstellt und was dies mit "bits"
zu tun hat.
Welche "Gruppierungen" sollen erstellt werden ?
mfg
Gert
Projekte gibt es viele (z.B. Hausbau; Produktfertigung; Straßenbau; Expeditionen usw) Projekt_Möglichkeiten.
Da solltest Du uns doch verraten, welches "Projekt" Du planst. Ebenso möchte ich wissen, was das Feld "fertig" darstellt und was dies mit "bits"
zu tun hat.
Welche "Gruppierungen" sollen erstellt werden ?
mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
Win7_64 / LO_4.4.5.2
-
- ***
- Beiträge: 62
- Registriert: Do, 01.05.2008 11:33
Re: Mittelwert mit Zähler
Gert Seler hat geschrieben:Hallo d.z.,
Projekte gibt es viele (z.B. Hausbau; Produktfertigung; Straßenbau; Expeditionen usw) Projekt_Möglichkeiten.
Da solltest Du uns doch verraten, welches "Projekt" Du planst. Ebenso möchte ich wissen, was das Feld "fertig" darstellt und was dies mit "bits"
zu tun hat.
Welche "Gruppierungen" sollen erstellt werden ?
mfg
Gert
hallo Gert,
also, die Auflistung am Anfang betitelt die Felder.
Projekt = Textfeld mit Projektnamen
start,Stop = Timestamp Feld wird automatisch eingetragen
fertig = Binärfeld wird gesetzt wenn das Projekt abgeschlossen ist.
Gruppiert wird wie am Anfang des Themas beschrieben nach dem Projektnamen.
hoffe das hilft etwas zum Verständnis meines Problems.
Gruß
Daniel
Re: Mittelwert mit Zähler
Hallo Zerstreuter,
erstmal eine Frage. Warum Binärfeld? Wenn der Status des Projekts eingetragen wird, dann reicht doch BOOLEAN. Projekt fertig = TRUE
Dann könnte man das in der Art aufbauen:
Gruß Barlee
erstmal eine Frage. Warum Binärfeld? Wenn der Status des Projekts eingetragen wird, dann reicht doch BOOLEAN. Projekt fertig = TRUE
Dann könnte man das in der Art aufbauen:
Code: Alles auswählen
SELECT Projekt_ID, COUNT(Fertig) FROM [Tabelle] WHERE Fertig = 'TRUE'
GROUP BY Projekt_ID
-
- ***
- Beiträge: 62
- Registriert: Do, 01.05.2008 11:33
Re: Mittelwert mit Zähler
Barlee hat geschrieben:Hallo Zerstreuter,
erstmal eine Frage. Warum Binärfeld? Wenn der Status des Projekts eingetragen wird, dann reicht doch BOOLEAN. Projekt fertig = TRUE
Dann könnte man das in der Art aufbauen:Gruß BarleeCode: Alles auswählen
SELECT Projekt_ID, COUNT(Fertig) FROM [Tabelle] WHERE Fertig = 'TRUE' GROUP BY Projekt_ID
Hallo Barlee,
Binär = Boolean da binär ja auch nur 1 oder 0 also ja oder nein , wahr oder falsch entspricht !!
Generell aber könnte dein Vorschlag die Lösung meines Problems sein .
----
Nachtrag :
Ich habe nun die Formel mal an meine Formate/Zellnamen angepasst nur bekomm ich das innerhalb der Abfragen nicht zum Laufen. OOo Base meldet dann er könne den Zelleninhalt nicht auslesen.
wie kann ich das direkt in den Feldbereich eintragen !?
Danke für deine Hilfe schonmal
ich werde diesen Vorschlag mal ausprobieren
Re: Mittelwert mit Zähler
Hallo Zerstreuter,
Ich empfehle Dir, die Abfrage in der SQL Ansicht zu bearbeiten. Entweder "Abfrage in SQL Ansicht erstellen" oder "rechte Maustaste auf bestehende Abfrage >> In SQL Ansicht bearbeiten"
Dort kannst Du die Abfrage direkt mit SQL -wie im Thread beschrieben- aufbauen
Gruß Barlee
OOo Base meldet dann er könne den Zelleninhalt nicht auslesen.
Heißt das, Du befindest Dich in der Entwurfsansicht beim Abfrageentwurf??wie kann ich das direkt in den Feldbereich eintragen !?
Ich empfehle Dir, die Abfrage in der SQL Ansicht zu bearbeiten. Entweder "Abfrage in SQL Ansicht erstellen" oder "rechte Maustaste auf bestehende Abfrage >> In SQL Ansicht bearbeiten"
Dort kannst Du die Abfrage direkt mit SQL -wie im Thread beschrieben- aufbauen
Gruß Barlee
-
- ***
- Beiträge: 62
- Registriert: Do, 01.05.2008 11:33
Re: Mittelwert mit Zähler
Hi ,
Ich habe folgenden Code in die SQL Ansicht eingetragen und bekomme einen Fehlercode 1000 wenn ich abspeichern will.
Wenn da jemand mir einen Tip geben könnte wie ich das in eine funktionstüchtige Form bringen kann wäre ich sehr dankbar.
Danke für alle Eure Tips bisher ,
hoffentlich kann das noch jemand entknoten
Gruß
Daniel
ja , bin/war ich.Heißt das, Du befindest Dich in der Entwurfsansicht beim Abfrageentwurf??
Das habe ich jetzt mit meinen spärlichen SQL Kenntnissen versucht umzusetzen. Leider gibt es da ein paar Formatierungsprobleme mit denen ich nicht gerechnet habe.Ich empfehle Dir, die Abfrage in der SQL Ansicht zu bearbeiten. Entweder "Abfrage in SQL Ansicht erstellen" oder "rechte Maustaste auf bestehende Abfrage >> In SQL Ansicht bearbeiten"
Dort kannst Du die Abfrage direkt mit SQL -wie im Thread beschrieben- aufbauen
Ich habe folgenden Code in die SQL Ansicht eingetragen und bekomme einen Fehlercode 1000 wenn ich abspeichern will.
Wenn da jemand mir einen Tip geben könnte wie ich das in eine funktionstüchtige Form bringen kann wäre ich sehr dankbar.
Code: Alles auswählen
SELECT "Gerät"."Gerätetyp" AS "Was", AVG( DATEDIFF( 'mi', "Start", "fertig" ) ) AS "benötigt" FROM "Eingabe",COUNT("Übertragen") WHERE "Eingabe"."Übertragen" = 'TRUE' FROM "Eingabe", "Gerät" WHERE "Eingabe"."Gerät" = "Gerät"."ID" AND "Eingabe"."angefangen" = 1 GROUP BY "Gerät"."Gerätetyp"
hoffentlich kann das noch jemand entknoten

Gruß
Daniel
-
- ********
- Beiträge: 4330
- Registriert: Di, 22.06.2004 12:02
- Wohnort: 71134 Aidlingen
- Kontaktdaten:
Re: Mittelwert mit Zähler
Hallo Daniel,
es ist schon verwirrend. So wie Du die SQL-Klausel formuliert hast, kann dies nicht funktionieren.
1. Zunächst muss die Feldaufzählung, getrennt durch ein Komma, nach der SELECT-Klausel kommen.
2. Nach der FROM-Klausel die Aufzählung der Tabellen, getrennt durch ein Komma.
3. Nach der WHERE-Klausel die Aufzählung der Bedingungen, wobei Äpfel nicht mit Birnen verglichen werden können. D.h., es muss sich um dieselben Feldtypen handeln, sofern keine Umwandlung erfolgt. Bedingungen können mit AND und OR verknüpft werden.
Beispiel:
Der Tabellenname muss dem Feldnamen, getrennt durch einen Punkt (.) nur vorangestellt werden, wenn der Feldname nicht eindeutig hast. D.h., der Feldname in mehreren der angegebenen Tabellen enthalten ist. Deutsche Zeichen wie ü, ä, ö in Tabellen und Feldnamen solltest Du vermeiden. Nicht alle Datenbanken können damit etwas anfangen.
Ausführlichere Informationen findest Du hier:
http://de.wikipedia.org/wiki/SQL
http://hsqldb.org/web/hsqlDocsFrame.html
es ist schon verwirrend. So wie Du die SQL-Klausel formuliert hast, kann dies nicht funktionieren.
1. Zunächst muss die Feldaufzählung, getrennt durch ein Komma, nach der SELECT-Klausel kommen.
2. Nach der FROM-Klausel die Aufzählung der Tabellen, getrennt durch ein Komma.
3. Nach der WHERE-Klausel die Aufzählung der Bedingungen, wobei Äpfel nicht mit Birnen verglichen werden können. D.h., es muss sich um dieselben Feldtypen handeln, sofern keine Umwandlung erfolgt. Bedingungen können mit AND und OR verknüpft werden.
Beispiel:
Code: Alles auswählen
SELECT Feld1, Feld2, Typ, AVG(DATEDIFF(.......)) AS benötigt, COUNT(*)
FROM Tabelle1, Tabelle2
WHERE Tabelle1.Feld1 = Tabelle2.Feld1
AND Tabelle1.Uebertragen = 'TRUE'
AND Tabelle2.Angefangen = 1
GROUP BY Tabelle1.Typ
Ausführlichere Informationen findest Du hier:
http://de.wikipedia.org/wiki/SQL
http://hsqldb.org/web/hsqlDocsFrame.html
Gruß
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
-
- ***
- Beiträge: 62
- Registriert: Do, 01.05.2008 11:33
Re: Mittelwert mit Zähler
Hallo Leute ,
ich habe mir jetzt mal die Formel entsprechend übernommen allerding sieht es jetzt so aus als ob er Daten ausläßt.
Kurze Information zu den Eingaben :
Es wird jedes Projekt mehrmals gestartet und beendet bevor es den Logischen "True" Wert im uebertragen Feld bekommt.
Wenn ich die Logic dieses Quellcodes jetzt richtig verstehe würde es aber nur die Summieren die auch das uebertragen flag haben.
Das bedeutet das die gezählte Zeit nicht der wirklich benötigten Zeit entspricht.
Das Angefangen-Flag ist jedoch bei jedem mal gesetzt wo an dem Projekt gearbeitet wird.
Alles was ich von der db wissen möchte ist wie lange ein Projekt im Durchschnitt dauert wenn der Zähler für die Anzahl der Projekte die Summe aller uebertragen-flags ist.
irgendwie ist das hier alles noch nich so richtig das was ich suche
danke nochmals vielmals !!!
daniel
ich habe mir jetzt mal die Formel entsprechend übernommen allerding sieht es jetzt so aus als ob er Daten ausläßt.
Code: Alles auswählen
SELECT Feld1, Feld2, Typ, AVG(DATEDIFF(.......)) AS benötigt, COUNT(*)
FROM Tabelle1, Tabelle2
WHERE Tabelle1.Feld1 = Tabelle2.Feld1
AND Tabelle1.Uebertragen = 'TRUE'
AND Tabelle2.Angefangen = 1
GROUP BY Tabelle1.Typ
Es wird jedes Projekt mehrmals gestartet und beendet bevor es den Logischen "True" Wert im uebertragen Feld bekommt.
Wenn ich die Logic dieses Quellcodes jetzt richtig verstehe würde es aber nur die Summieren die auch das uebertragen flag haben.
Das bedeutet das die gezählte Zeit nicht der wirklich benötigten Zeit entspricht.
Das Angefangen-Flag ist jedoch bei jedem mal gesetzt wo an dem Projekt gearbeitet wird.
Alles was ich von der db wissen möchte ist wie lange ein Projekt im Durchschnitt dauert wenn der Zähler für die Anzahl der Projekte die Summe aller uebertragen-flags ist.
irgendwie ist das hier alles noch nich so richtig das was ich suche

danke nochmals vielmals !!!
daniel
Re: Mittelwert mit Zähler
Hallo zerstreuter,

Bring am besten ein Beispiel. Ein paar Zahlenreihen und darunter das Ergebnis in der Art, wie Du es haben möchtest. Das macht es anschaulicher und man kann gezielter helfen.
Gruß Barlee
Das ist schadeirgendwie ist das hier alles noch nich so richtig das was ich suche

Bring am besten ein Beispiel. Ein paar Zahlenreihen und darunter das Ergebnis in der Art, wie Du es haben möchtest. Das macht es anschaulicher und man kann gezielter helfen.
Gruß Barlee
-
- ***
- Beiträge: 62
- Registriert: Do, 01.05.2008 11:33
Re: Mittelwert mit Zähler
Hallo Leute ,
ok , das mit dem Beispiel klingt mir jetzt am logischsten
also hab ich jetz mal eine beispieltabelle erstellt -> siehe Anhang.
Ich hoffe es verdeutlicht so ca was ich haben möchte
das Feld angefangen ist in diesem Beispiel immer 1 - dies ist jedoch nicht immer der Fall ! In der Auswertung, die ich haben möchte, sollen aber nur die Projekte berücksichtigt werden die angefangen worden sind.
Gruß und Dank
Daniel
ok , das mit dem Beispiel klingt mir jetzt am logischsten

also hab ich jetz mal eine beispieltabelle erstellt -> siehe Anhang.
Ich hoffe es verdeutlicht so ca was ich haben möchte

das Feld angefangen ist in diesem Beispiel immer 1 - dies ist jedoch nicht immer der Fall ! In der Auswertung, die ich haben möchte, sollen aber nur die Projekte berücksichtigt werden die angefangen worden sind.
Gruß und Dank
Daniel
Re: Mittelwert mit Zähler
Hallo Zerstreuter,
das ist gar nicht so schwer, wenn Du Dir die Aufgabe logisch "zerpflückst".
Du benötigst genau zwei Ergebnistabellen, die Du durch Unterabfragen erhältst. Die erste liefert Dir -gruppiert nach Projekt- die Zeitsummen in Stunden , die zweite die Anzahl fertiger Projekte, ebenfalls nach Projekten gruppiert.
Die letzte benötigte Ergebnisspalte ist eine Berechnung aus Spalten der ersten beiden Unterabfragen.
Die beiden Ergebnistabellen verbindest Du nun mittels LEFT JOIN über das gemeinsame Attribut "Projekte".
Folgendes Beispiel geht von einer Ursprungstabelle "Tab_Projekte" aus, die die in Deinem Beispiel genannten Felder
"Projekt", "Start", "Stop", "Angefangen", "fertig" bereitstellt
Erste Unterabfrage (Ergebnistabelle Tab_A)
Zweite Unterabfrage (Ergebnistabelle Tab_B)
Nun der LEFT JOIN und die Berechnung von Zeit/Anz_fertiger_Reparaturen
mit dem Ergebnis, das Deiner Wunschvorstellung recht ähnlich ist:
SQL direkt ausführen muss aktiviert sein!
Gruß Barlee
das ist gar nicht so schwer, wenn Du Dir die Aufgabe logisch "zerpflückst".
Du benötigst genau zwei Ergebnistabellen, die Du durch Unterabfragen erhältst. Die erste liefert Dir -gruppiert nach Projekt- die Zeitsummen in Stunden , die zweite die Anzahl fertiger Projekte, ebenfalls nach Projekten gruppiert.
Die letzte benötigte Ergebnisspalte ist eine Berechnung aus Spalten der ersten beiden Unterabfragen.
Die beiden Ergebnistabellen verbindest Du nun mittels LEFT JOIN über das gemeinsame Attribut "Projekte".
Folgendes Beispiel geht von einer Ursprungstabelle "Tab_Projekte" aus, die die in Deinem Beispiel genannten Felder
"Projekt", "Start", "Stop", "Angefangen", "fertig" bereitstellt
Erste Unterabfrage (Ergebnistabelle Tab_A)
Code: Alles auswählen
SELECT
"Projekt",
SUM(CAST(DATEDIFF('mi',"Start","Stop") AS DOUBLE)/60) AS "Sum_Std"
FROM "Tab_Projekte"
WHERE "Angefangen"=1
GROUP BY "Projekt"
Code: Alles auswählen
SELECT
"Projekt",
COUNT("fertig") as "Anz_Fertig"
FROM "Tab_Projekte"
WHERE "fertig" = 1 AND "Angefangen"=1
GROUP BY "Projekt"
Code: Alles auswählen
SELECT
"Tab_A"."Projekt",
"Tab_A"."Sum_Std",
"Tab_B"."Anz_Fertig",
"Tab_A"."Sum_Std"/"Tab_B"."Anz_Fertig" AS "Sum/Anz"
FROM
(
SELECT
"Projekt",
SUM(CAST(DATEDIFF('mi',"Start","Stop") AS DOUBLE)/60) AS "Sum_Std"
FROM "Tab_Projekte"
WHERE "Angefangen"=1
GROUP BY "Projekt"
) "Tab_A" LEFT JOIN
(
SELECT
"Projekt",
COUNT("fertig") as "Anz_Fertig"
FROM "Tab_Projekte"
WHERE "fertig" = 1 AND "Angefangen"=1
GROUP BY "Projekt"
) "Tab_B" ON "Tab_A"."Projekt" = "Tab_B"."Projekt"
Gruß Barlee
-
- ***
- Beiträge: 62
- Registriert: Do, 01.05.2008 11:33
Re: Mittelwert mit Zähler
Hey Barlee,
Mega Dankeschön ... genau das habe ich gesucht
..
habe deinen Vorschlag mal umgesetzt und läuft
..
Vielen Danke für deine Mühe
.. hab wieder was gelernt ..
Gruß
der_Zerstreute
Mega Dankeschön ... genau das habe ich gesucht

habe deinen Vorschlag mal umgesetzt und läuft

Vielen Danke für deine Mühe

Gruß
der_Zerstreute