BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Frage zu Anzeigeformat eines Rechenergebnisses

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
SdKfz171
Beiträge: 19
Registriert: Fr 31. Mai 2019, 13:27

Frage zu Anzeigeformat eines Rechenergebnisses

Beitrag von SdKfz171 » Di 2. Jun 2020, 11:04

Hallo zusammen,

Foilgendes spielkt sich in einer als SQL definierten Ansicht ab, die auf mehrere auch als SQL definierten Ansichten beruht.

ich habe 2 Spalten, die zuerst einmal Integer sind.
Eine ist ein COUNT(*) Ergebnis und die andere ist eine Summe aus den Werten in einer Integer-Spalte einer Tabelle, zu der der COUNT(*) gehört (in der Abfrage, auf die die andere Abfrage zugreift).
Eigentlich möchte ich den durchschnittlichen Inhalt der summierten Spalte wissen. Da es sich um Integer handelt liefert AVG() natürlich auch einen Integer und zwar 1 (bei einem tatsächlichen Wert von 100505 / 68698 also etwa 1,60226).
Also berechne ich es halt selber,
Erster Versuch ohne CAST liefert auch wieder 1. (Klar, Ergebnis auch als Integer interpretiert)
Soweit ist eigentlich alles wie (nach lesen der Doku) zu erwarten ist.
Also berechne ich CAST (Spaltensumme AS DOUBLE PRECISION) / CAST(count(*) Wert AS DOUBLE PRECISION).
Angezeigt wird jetzt 1,6, was grundsätzlich schon mal ganz gut passt und ich kann damit auch leben.
Für mein Verständnis wäre es allerdings gut zu wissen, worauf das Abschneiden der weiteren Kommastellen beruht.
Auch ein weiterer CAST um das Ergebnis ändert hier nichts. Genausowenig wie ein ROUND(Ergebnis, 3).
Ich habe ein wenig in der Doku zu diesem Thema gesucht, aber nichts gefunden.

Basisview (StatHelperSongGesamt):
SELECT 1 "StatId", COUNT( * ) "anzahl", SUM( "Song"."Laenge" ) "Laenge Sec", CAST( SUM( "Song"."Laenge" ) / 60 AS INTEGER ) || ' : ' || CAST( SUM( "Song"."Laenge" ) - ( FLOOR( SUM( "Song"."Laenge" ) / 60 ) ) * 60 AS INTEGER ) "Laenge min", CAST( SUM( "Song"."Laenge" ) / 3600 AS INTEGER ) || ' : ' || CAST( ( SUM( "Song"."Laenge" ) - ( FLOOR( SUM( "Song"."Laenge" ) / 3600 ) ) * 3600 ) / 60 AS INTEGER ) || ' : ' || CAST( SUM( "Song"."Laenge" ) - ( FLOOR( SUM( "Song"."Laenge" ) / 60 ) ) * 60 AS INTEGER ) "Laenge h", CAST( SUM( "Song"."Laenge" ) / 86400 AS INTEGER ) || ' : ' || CAST( ( SUM( "Song"."Laenge" ) - ( FLOOR( SUM( "Song"."Laenge" ) / 86400 ) ) * 86400 ) / 3600 AS INTEGER ) || ' : ' || CAST( ( SUM( "Song"."Laenge" ) - ( FLOOR( SUM( "Song"."Laenge" ) / 3600 ) ) * 3600 ) / 60 AS INTEGER ) || ' : ' || CAST( SUM( "Song"."Laenge" ) - ( FLOOR( SUM( "Song"."Laenge" ) / 60 ) ) * 60 AS INTEGER ) "Laenge d", SUM( "Song"."Einstufung" ) "Einstufung summiert" FROM "Song" WHERE LOWER ( COALESCE ( "Song"."Kommentar", '' ) ) != 'doppelt' AND "Song"."Sound" < 4

View mit Berechnung:
SELECT "Ges"."anzahl" "gesamt Anzahl Songs", "Ges"."Laenge d" "Länge in Tagen", ROUND( CAST( "Ges"."Einstufung summiert" AS DOUBLE PRECISION ) / CAST( "Ges"."anzahl" AS DOUBLE PRECISION ), 3 ) "durchschnittliche Einstugung", "Gut"."anzahl" "Songs gut", "Gut"."Laenge d" "Gut Länge in Tagen", "Plus"."anzahl" "Songs GG+", "Plus"."Laenge d" "GG+ Länge in Tagen", "GG"."anzahl" "Songs GG", "Minus"."anzahl" "Songs GG-", "OK"."anzahl" "Songs OK", "No"."anzahl" "Songs No" FROM "StatHelperSongGesamt" AS "Ges" JOIN "StatHelperSongGut" AS "Gut" ON "Ges"."StatId" = "Gut"."StatId" JOIN "StatHelperSongPlus" AS "Plus" ON "Ges"."StatId" = "Plus"."StatId" JOIN "StatHelperSongGG" AS "GG" ON "Ges"."StatId" = "GG"."StatId" JOIN "StatHelperSongMinus" AS "Minus" ON "Ges"."StatId" = "Minus"."StatId" JOIN "StatHelperSongOK" AS "OK" ON "Ges"."StatId" = "OK"."StatId" JOIN "StatHelperSongNo" AS "No" ON "Ges"."StatId" = "No"."StatId"

Die anderen gejointen Views funktionieren, deswegen poste ich sie hier nicht.
Kann mich jemand in eine Richtung schubsen, wonach in in der Doku suchen soll oder weiß jemand vielleicht direkit, wo mein Problem herrührt?

RobertG
Beiträge: 2735
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Frage zu Anzeigeformat eines Rechenergebnisses

Beitrag von RobertG » Di 2. Jun 2020, 15:06

Die einfachste Möglichkeit, ein Integer-Ergebnis von vornherein zu vermeiden, ist, in die Rechnung eine Multiplikation mit z.B. 1.000000000 einzubauen. Dann hat Dein Ergebnis garantiert 9 Nachkommastellen.

Wenn Du schon das Handbuch heruntergeladen hast, dann schau Dir dazu einmal das Addieren von Zeiten zu Zeitstempeln in dem Kapitel "Datenbank-Aufgaben" an.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

SdKfz171
Beiträge: 19
Registriert: Fr 31. Mai 2019, 13:27

Re: Frage zu Anzeigeformat eines Rechenergebnisses

Beitrag von SdKfz171 » Di 2. Jun 2020, 16:22

OK, vielen Dank. Werde ich mir mal anschauen.
Eigentlich hatte ich gedacht durch den Cast das gleiche zu erreichen.

SdKfz171
Beiträge: 19
Registriert: Fr 31. Mai 2019, 13:27

Re: Frage zu Anzeigeformat eines Rechenergebnisses

Beitrag von SdKfz171 » Di 2. Jun 2020, 16:30

Hmm.

SELECT "Ges"."anzahl" "gesamt Anzahl Songs", "Ges"."Laenge d" "Länge in Tagen", ( 1.0000 * "Ges"."Einstufung summiert" ) / ( 1.0000 * "Ges"."anzahl" ) "durchschnittliche Einstugung", "Gut"."anzahl" "Songs gut", "Gut"."Laenge d" "Gut Länge in Tagen", "Plus"."anzahl" "Songs GG+", "Plus"."Laenge d" "GG+ Länge in Tagen", "GG"."anzahl" "Songs GG", "Minus"."anzahl" "Songs GG-", "OK"."anzahl" "Songs OK", "No"."anzahl" "Songs No" FROM "StatHelperSongGesamt" AS "Ges" JOIN "StatHelperSongGut" AS "Gut" ON "Ges"."StatId" = "Gut"."StatId" JOIN "StatHelperSongPlus" AS "Plus" ON "Ges"."StatId" = "Plus"."StatId" JOIN "StatHelperSongGG" AS "GG" ON "Ges"."StatId" = "GG"."StatId" JOIN "StatHelperSongMinus" AS "Minus" ON "Ges"."StatId" = "Minus"."StatId" JOIN "StatHelperSongOK" AS "OK" ON "Ges"."StatId" = "OK"."StatId" JOIN "StatHelperSongNo" AS "No" ON "Ges"."StatId" = "No"."StatId"

Liefert genauso 1.6 statt 1.6203.

Ach ja, ich weiß gar nicht, wie die aktuellen Einstellungen sind. Ich bewege mich auf jeden Fall in Firebird.

RobertG
Beiträge: 2735
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Frage zu Anzeigeformat eines Rechenergebnisses

Beitrag von RobertG » Di 2. Jun 2020, 18:34

... und die Anzeige hast Du auch auf die entsprechende Nachkommastellenzahl eingestellt?

Ohne ein Beispiel wird das nicht zu klären sein. Vielleicht mailst Du mir einfach einmal die Datenbank, damit wir von den gleichen Voraussetzungen ausgehen können.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten