AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird SQL und Runden bei Count
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird SQL und Runden bei Count

Ein Thema von buyden · begonnen am 1. Apr 2005 · letzter Beitrag vom 1. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#1

Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 18:24
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS
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:
with frmdata.qustat3 do
    begin
      close;
      sql.Clear;
      sql.add('SELECT count(nummer)/count(distinct eingangsdatum) FROM auftrag;');
      open;
    end;
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.
Wie kann man denn da abhilfe schaffen, ich bräuchte das ergebnis auf 2-3 Kommastellen genau.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 18:39
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
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 18:41
Das muss doch auch irgendwie direkt in der abfrage gehen, wäre sicher ein bisschen eleganter.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#4

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 18:49
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
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#5

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 18:52
so kannst Du Firebird zu Floats zwingen:
SELECT CAST(count(nummer) AS Float) / CAST(count(distinct eingangsdatum) AS FLOAT) FROM auftrag;
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#6

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 18:57
hallo basilikum,

so geht es auch, wobei ich immer wieder Stored Procedure bevorzugen würde.

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 19:07
hi basilikum

so in der art hab ich mir das vorgestellt, jetzt müssten nur noch die Kommastellen auf 3 festgelegt werden können

Gibt Cast das auch her?
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 20:23
Moin,

es gibt noch eine übersichtlichere Variante (mit 1.0 multiplizieren)

SQL-Code:
SELECT ROUND((1.0 * COUNT(nummer)) / COUNT(DISTINCT eingangsdatum), 3)
FROM auftrag;
...ich würde immer von einer Stored Procedure abraten (das ist den Aufwand nicht wert)...

MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 21:10
Da kommt bei mir ne Fehlermeldung von wegen "Function unknown - ROUND"
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Firebird SQL und Runden bei Count

  Alt 1. Apr 2005, 21:28
oh ja, das habe ich auch gerade gemerkt. sorry.

Aber es geht noch einfacher als ich dachte...

SQL-Code:
SELECT (1.000 * COUNT(nummer)) / COUNT(DISTINCT eingangsdatum)
FROM auftrag;
Mit den Nachkommastellen der 1 kann man die gewünschte Genauigkeit festlegen.

MfG
Thorsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz