Dies ist die SQL-Abfrage, die ich geschrieben habe. Es funktioniert, bis kurz vor der Gruppe Aussage aber sobald ich den Teil hinzufügen, bekomme ich diesen Fehler:GROUP BY-Fehler - SQL
'reading_datetime' is neither present in the group by, nor is it an aggregate function. Add to group by or wrap in first() (or first_value) if you don't care which value you get
Meine Frage:
Select A.bill_account, hour(A.reading_datetime), A.reading_value
from (
Select cast(cast(bill_account as double) as int)bill_account, reading_datetime, cast(reading_value as double)reading_value, `interval`
from amerendataorc
WHERE cast(cast(`interval` as double)as int) = 3600 AND reading_datetime between '2015-03-15 00:00:00' and '2016-03-14 23:59:59'
) A
GROUP BY A.bill_account
HAVING (COUNT(A.bill_account)>= 8000) and (COUNT(A.bill_account) < 9500)")
nicht sicher, wie die Gruppe wird die Abfrage vermasselt .
Ich denke, Sie müssen A.reading_value innerhalb der Group BY-Klausel – ae15
einschließen Lesen Sie https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html und überprüfen Sie Ihre Einstellung für 'ONLY_FULL_GROUP_BY'. –
Die Fehlermeldung ist erwartetes Verhalten und entspricht dem ANSI SQL-Standard. Was nicht klar ist, ist, welche Ergebnismenge erwartet wird, dass die Anweisung zurückkehrt, d.h. was Sie erreichen wollen, indem Sie die GROUP BY-Klausel hinzufügen. Die Änderungen an der Anweisung (oder der Einstellung sql_mode) hängen von dem Ergebnis ab, das Sie zurückgeben möchten. Wir können Änderungen vorschlagen, aber ohne eine Spezifikation schätzen wir nur, was Sie von MySQL erwarten. – spencer7593