![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS
Firebird SQL und Runden bei Count
Hi,
ich möchte die durchschnittliche Anzahl von bearbeiteten aufträgen pro Tag aus meiner DB anzeigen lassen. Dafür habe ich folgendes Query:
Delphi-Quellcode:
es sollte also bei 120 Tagen und 451 aufträgen irgendwas mit 3,75... rauskommen. leider bekomm ich nur ein gerundetes ergebnis, vermutlich weil das ganze nur ein integer-wert ist.
with frmdata.qustat3 do
begin close; sql.Clear; sql.add('SELECT count(nummer)/count(distinct eingangsdatum) FROM auftrag;'); open; end; Wie kann man denn da abhilfe schaffen, ich bräuchte das ergebnis auf 2-3 Kommastellen genau. |
Re: Firebird SQL und Runden bei Count
Könntest es ein bisschen umständlicher machen.
Du holst den Count und das Eingangsdatum und speicherst es in einer Variable und teilst nun das ganze. Per FloatToStrF kannst du das ganze nun auf 2-3 Kommastellen angeben |
Re: Firebird SQL und Runden bei Count
Das muss doch auch irgendwie direkt in der abfrage gehen, wäre sicher ein bisschen eleganter.
|
Re: Firebird SQL und Runden bei Count
hallo,
mache eine stored Procedure, die du in der DB speicherst und dann immer nur abrufst. es ist immer besser, wenn du alles,was in der db gemacht werden kann, da auch gemacht wird. raik |
Re: Firebird SQL und Runden bei Count
so kannst Du Firebird zu Floats zwingen:
SQL-Code:
SELECT CAST(count(nummer) AS Float) / CAST(count(distinct eingangsdatum) AS FLOAT) FROM auftrag;
|
Re: Firebird SQL und Runden bei Count
hallo basilikum,
so geht es auch, wobei ich immer wieder Stored Procedure bevorzugen würde. raik |
Re: Firebird SQL und Runden bei Count
hi basilikum
so in der art hab ich mir das vorgestellt, jetzt müssten nur noch die Kommastellen auf 3 festgelegt werden können :roll: Gibt Cast das auch her? |
Re: Firebird SQL und Runden bei Count
Moin,
es gibt noch eine übersichtlichere Variante (mit 1.0 multiplizieren)
SQL-Code:
...ich würde immer von einer Stored Procedure abraten (das ist den Aufwand nicht wert)...
SELECT ROUND((1.0 * COUNT(nummer)) / COUNT(DISTINCT eingangsdatum), 3)
FROM auftrag; MfG Thorsten |
Re: Firebird SQL und Runden bei Count
Da kommt bei mir ne Fehlermeldung von wegen "Function unknown - ROUND"
|
Re: Firebird SQL und Runden bei Count
oh ja, das habe ich auch gerade gemerkt. sorry.
Aber es geht noch einfacher als ich dachte...
SQL-Code:
Mit den Nachkommastellen der 1 kann man die gewünschte Genauigkeit festlegen.
SELECT (1.000 * COUNT(nummer)) / COUNT(DISTINCT eingangsdatum)
FROM auftrag; MfG Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz