Auge: mysql: Nach Datumswerten gruppieren

Beitrag lesen

Hallo

SELECT x.datum, x.zeilen, y.datum, y.zeilen, CAST(COALESCE(y.zeilen, 0) AS FLOAT)/ x.zeilen AS Quote
FROM (SELECT FROM_UNIXTIME(last, '%Y%-%m-%d'), COUNT(*) AS zeilen FROM access GROUP BY FROM_UNIXTIME(last, '%Y%-%m-%d')) x LEFT JOIN
     (SELECT date( `Erstelldatum` ), COUNT(*) AS zeilen FROM slow GROUP BY date( `Erstelldatum` )) y ON x.FROM_UNIXTIME(last, '%Y%-%m-%d') = y.date( `Erstelldatum` )

ergibt leider bei mir nicht obige Tabelle, sondern:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FLOAT)/ x.zeilen AS Quote
FROM (SELECT FROM_UNIXTIME(last, '%Y%-%m-%d'), COUNT(*' at line 1 

Da ich den oben eingesetzten Begriff "CAST(COALESCE(y.zeilen, 0) AS FLOAT)" nicht wirklich verstehe, kann ich auch die Fehlermeldung nicht verstehen.

Mit COALESCE werden die Werte einer Spalte durchgegangen und der erste Wert, der nicht NULL ist, ausgegeben. Mit CAST erfolgt eine Typumwandlung, hier mit AS FLOAT als Fließkommazahl. Wenn ich die Auflistung der für CONVERT möglichen Datentypen, die auch für CAST gilt, richtig interpretiere, gibt es keinen zulässigen Datentypen FLOAT, dafür aber den Typ DECIMAL.

SELECT
  x.datum,
  x.zeilen,
  y.datum,
  y.zeilen,
  CAST(COALESCE(y.zeilen, 0) AS DECIMAL([Gesamtanzahl der Stellen], [Anzahl der Nachkommastellen])) / x.zeilen AS Quote
FROM

Tschö, Auge

--
Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
Wolfgang Schneidewind *prust*