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*
Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
Wolfgang Schneidewind *prust*