Announcement

Collapse
No announcement yet.

Durchschnitt als Decimal Zahl

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Durchschnitt als Decimal Zahl

    Hallo zusammen,

    habe einen kleinen select gebastelt:
    Code:
    select AVG(DIFFERENCE) as dif from (
    SELECT  M.DSBL_FIN, M.DSBL_SERVICE_ID,
    		DAYS(M.DSBL_SERVICE_DATE) - DAYS(O.DSBL_SERVICE_DATE) AS DIFFERENCE 
    FROM V3GRDSBL AS M
         INNER JOIN V3GRDSBL AS O
             ON M.DSBL_FIN = O.DSBL_FIN
                AND M.DSBL_SERVICE_ID = (O.DSBL_SERVICE_ID + 1)
         INNER JOIN (SELECT DSBL_FIN, MAX(DSBL_SERVICE_ID) MaxID
                     FROM V3GRDSBL
    				 WHERE DSBL_COUNTRY_CD = '20000' AND
    				DSBL_SERVICE_DATE BETWEEN '2008-08-01' AND '2008-08-31' AND
    				DSBL_FIN LIKE '219%' AND
    				DSBL_MILEAGE IS NOT null
    				GROUP BY DSBL_FIN) AS T
                ON M.DSBL_FIN = T.DSBL_FIN
                AND M.DSBL_SERVICE_ID = T.MaxID
    )as newTable
    hier kommt es mir nur auf die erste zeile an beziehungsweise das Feld DIFFERENCE.
    Denn der Durchschnitt den ich berechnen möchte wird mir immer als integer zurück gegeben in meinem Testfall gibt es 3 einträge in DIFFERENCE mit
    27;0;1 und als Durchschnitt wird 9 ausgegeben. Muss ich hier etwas casten oder so vielen dank für eure Hilfe
    Gruß Marco

  • #2
    Hallo Marco,

    genau, es wird immer der kleinste Datentyp zugrunde gelegt.

    Das kleine Bsp sollte es verdeutlichen:

    [highlight=SQL]SET NOCOUNT ON

    SELECT AVG(Diff) AS Res
    FROM (SELECT 27 AS Diff
    UNION SELECT 0
    UNION SELECT 1) AS Dummy

    SELECT AVG(Diff) AS Res
    FROM (SELECT 27.0 AS Diff
    UNION SELECT 0.0
    UNION SELECT 1.0) AS Dummy

    SELECT AVG(CONVERT(money, Diff)) AS Res
    FROM (SELECT 27 AS Diff
    UNION SELECT 0
    UNION SELECT 1) AS Dumm[/highlight]
    [highlight=code]Res
    -----------
    9

    Res
    ---------------------------------------
    9.333333

    Res
    ---------------------
    9,3333[/highlight]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Ok fast wie in Java vielen Danke
      Gruß

      Comment

      Working...
      X