Grundlagen - Rechnen mit Daten aus der Datenbank

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von eXTasY »

kuhl danke! =)

Glaube ich hab es verstanden.

Nun hab ich die nächste Frage ^^

Wie kann ich nun mit den Daten in der Tabelle "Speicherung" rechnen?
Also Durchschnitt der einzelnen Fehler pro Artikelnr etc pp?

MfG
eX
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von lorbass »

eXTasY hat geschrieben:Nun hab ich die nächste Frage ^^
Und mit der nächsten Frage beginnt stets ein neues Thema.

Beachte bitte die Allgemeinen Hinweise zur Forumsbenutzung, die du in jeder Kategorie in den Bekanntmachungen findest.

Gruß
lorbass
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von RobertG »

Hallo eX,
eXTasY hat geschrieben: Wie kann ich nun mit den Daten in der Tabelle "Speicherung" rechnen?
Also Durchschnitt der einzelnen Fehler pro Artikelnr etc pp?
Du erstellst eine Abfrage, schaltest dann die Design-Ansicht aus und kannst mit den Feldern Rechnen oder Funktionen von der HSQLDB nutzen. Siehe dazu auch das Base-Handbuch.
Beispiel:

Code: Alles auswählen

SELECT ("FC 01"+"FC 02"+"FC 03"+"FC 04"+"FC 05"+"FC 06"+"FC 07"+"FC 08"+"FC 09"+"FC 10")/10 AS "Durchschnitt" FROM "Speicherung"
Damit berechnest Du den Durchschnitt aller Einträge. Funktioniert in dieser Einfachheit aber nur korrekt, wenn tatsächlich in alle Felder etwas eingetragen wurde.

Gruß

Robert
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von juetho »

Nur der Vollständigkeit halber weise ich auf die Spaltenfunktion AVG hin. (Sie wird im Handbuch nicht erwähnt, ist aber eine SQL-Standardfunktion und sollte deshalb ebenfalls vorhanden sein.) Die liefert den Durchschnitt aller Werte innerhalb einer Spalte. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von RobertG »

Hallo Jürgen,

die Spaltenfunktionen sind ja für jeden sichtbar auszuwählen über die grafische Benutzeroberfläche im Design-Modus. Mal sehen, ob wir die noch deutlicher im Base-Handbuch einbauen.

Gruß

Robert
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von eXTasY »

ähm ok ^^

kann mir mal jemand eine Beispiel-DB hochladen damit ich das sehen kann?

Das schaut nämlich allein von einem Durchschnitt einer Zeile scho wenig kompliziert aus.
Und wenn ich pro Artikel Spaltenmäßig den MIttelwert haben möchte?

MfG
eX
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von juetho »

RobertG hat geschrieben:die Spaltenfunktionen sind ja für jeden sichtbar auszuwählen über die grafische Benutzeroberfläche im Design-Modus. Mal sehen, ob wir die noch deutlicher im Base-Handbuch einbauen.
Da kann man die Schwerpunkte sehen: Ich kümmere mich weniger um den Design-Modus als vielmehr um "Entwicklung per Code". :D Im Handbuch fehlt auf Seite 270 ff. einfach eine Liste der Spaltenfunktionen.
eXTasY hat geschrieben:Das schaut nämlich allein von einem Durchschnitt einer Zeile scho wenig kompliziert aus.
Das sah in Roberts Beispiel nur deshalb so "komisch" aus, weil dafür eben die Werte von zehn Spalten addiert werden sollten. AVG bezieht sich auf alle Werte einer Spalte und ist (siehe den von mir genannten Link mit Beispiel) ganz einfach zu benutzen.

Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von RobertG »

Zwei Zusätze:
Der Code für den Durchschnitt muss noch erweitert werden, da sonst nur auf ganze Zahlen ausgerechnet wird. schließlich sind die Ausgangsfelder Ganzzahlfelder:

Code: Alles auswählen

SELECT CAST( ( "FC 01" + "FC 02" + "FC 03" + "FC 04" + "FC 05" + "FC 06" + "FC 07" + "FC 08" + "FC 09" + "FC 10" ) AS DECIMAL ( 5 , 1 ) ) / 10 AS "Durchschnitt" FROM "Speicherung"
Aus den Ganzzahlen werden so Dezimalzahlen mit insgesamt 5 Stelleneinheiten, davon 1 Nachkommastelle.
Die HSQLDB kennt zwar noch den Begriff "CONVERT" - der wird aber von der GUI von Base nicht verstanden.
Beim Durchschnitt für die Spalten haben wir sofort wieder einen Bug aufgetan. Die GUI setzt dort den Begriff "INTERSECTION" und die HSQLDB weigert sich, damit zu arbeiten. Wird händisch stattdessen "AVG" eingegeben, so funktionierts.
Ergänzung: Anscheinend gibt es einen Unterschied zwischen INTERSECTION und AVG, den ich nicht so recht durchschaue. DIe GUI bietet nämlich auch neben dem Durchschnitt den Mittelwert an. Und über diese Auswahl wird dann AVG gewählt. Auch bei AVG muss übrigens eine Umwandlung der Datenformate erstellt werden, damit die Anzeige halbwegs genau ist. Ebenfalls also CAST (... AS DECIMAL(5,1)) oder eben mehr Stellen.

Gruß

Robert
Dateianhänge
Auswertung Fehlersammelkarte KTL HBN.odb
Mit Durchschnittsabfragen
(42.21 KiB) 130-mal heruntergeladen
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von DPunch »

Servus
RobertG hat geschrieben:Der Code für den Durchschnitt muss noch erweitert werden, da sonst nur auf ganze Zahlen ausgerechnet wird. schließlich sind die Ausgangsfelder Ganzzahlfelder
Diesen Umweg brauchst Du gar nicht zu nehmen, es reicht, eine der Zahlen als Double zu verwenden. Am übersichtlichsten ist es, dies beim Divisor zu tun.

Code: Alles auswählen

SELECT ( "FC 01" + "FC 02" + "FC 03" + "FC 04" + "FC 05" + "FC 06" + "FC 07" + "FC 08" + "FC 09" + "FC 10" ) / 10.0 AS "Durchschnitt" FROM "Speicherung"
Wo genau Du dies tust, bleibt natürlich ganz Dir überlassen

Code: Alles auswählen

1.0 * ( "FC 01" + "FC 02" + "FC 03" + "FC 04" + "FC 05" + "FC 06" + "FC 07" + "FC 08" + "FC 09" + "FC 10" ) / 10
erfüllt seinen Zweck genauso wie

Code: Alles auswählen

( "FC 01" + "FC 02" + "FC 03" + "FC 04" + "FC 05" + "FC 06" + "FC 07" + "FC 08" + "FC 09" + "FC 10"  + 0.0) / 10
etcetc.
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von eXTasY »

Hi,

ich wird das mal ausprobieren, aber irgendwie ist das voll spanisch für mich. :(

Gibt es auch eine wenn/dann Funktion wie im excel`?

MFG
eX
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von RobertG »

Hallo Ex,
eXTasY hat geschrieben: Gibt es auch eine wenn/dann Funktion wie im excel?
Eine Datenbank ist natürlich keine Tabellenkalkulation. Einige Funktionen sind dennoch verfügbar. Schau einfach einmal in diesem Forum den Thread, der gerade parallel läuft:
viewtopic.php?f=8&t=60641#p225198

Gruß

Robert
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von eXTasY »

hi

danke =)

ich muss mal kurz was doofes fragen tut mir leid, aber gibt es irgendwo eine übersicht der ganzen befehle und was sie zu bedeuten haben etc pp?

ich hoffe dass ich langsam durch die Berechnungen durchblicke, denn ich hab noch eine grafische Auswertung vor und da wären dann meine nächsten fragen :D

EDIT:
Also das mit den Mittelwerten hab ich nun geschafft! =)
Nun ist meine Frage noch ob ich bei gleicher Auftragsnummer die Zeilen zusammenzählen kann bzw wie?

MfG
eX
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von juetho »

eXTasY hat geschrieben: eine übersicht der ganzen befehle und was sie zu bedeuten haben etc pp?
Handbuch Seite 270 ff. (wie gesagt, ohne die Spaltenfunktionen). In einer anderen Diskussion hat Robert auf die SQL-Syntax von HSQL verwiesen; im Abschnitt zu SELECT gibt es winzige Hinweise auf die vorhandenen Spaltenfunktionen. Mehr dazu steht in der Einführung in SQL.
Nun ist meine Frage noch ob ich bei gleicher Auftragsnummer die Zeilen zusammenzählen kann bzw wie?
Du kannst natürlich nicht "Zeilen zusammenzählen", sondern nur Zahlen; einzelne Zahlen sind Werte jeweils innerhalb einer Spalte und einer Zeile. Welche Überraschung: die dazugehörige Funktion heißt SUM. Dann ist sinnvollerweise mit GROUP BY (und nicht mit DISTINCT) zu arbeiten.

Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von eXTasY »

hi juetho,

danke schonmal

ich habe zB fünf zeilen mit 2 verschiedenen Artikelnummern
nun wollte ich die einzelnen zellen von fc1 bis fc10 zellenweise zusammenzählen
so dass ich am ende im grund wie die Tabelle artikelauflistung habe, nur eben mit alles werten der fc dabei

EDIT:
Ok ich glaube es funkionert.
Aber kann ich das ganze auch zwei mal Gruppieren?
Also zB nach Artikelnr und Auftragsnummer?

MfG
eX
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Grundlagen - Rechnen mit Daten aus der Datenbank

Beitrag von juetho »

eXTasY hat geschrieben:Aber kann ich das ganze auch zwei mal Gruppieren?
Also zB nach Artikelnr und Auftragsnummer?
Grundsätzlich ja, siehe Erläuterungen zu GROUP BY. Es ist nur die Frage, inwieweit Zwischensummen zur Verfügung stehen.

Du hast doch verschiedene Links zur SQL-Syntax bekommen. Ist es dir nicht möglich, dort nachzuschlagen? Du musst doch sowieso solche Erläuterungen durchlesen, um sie zu verstehen. Dann sollte die eigenständige Suche einfacher und schneller zum Ziel führen als eine neue bzw. ergänzende Frage im Forum.

Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Antworten