Warum ergeben die beiden Befehle unterschiedliche Ergebnisse bei der Verwendung von sqldf
in R?R, sqldf und avg für Ratio Durchschnitt
Da ist das Ziel, den Durchschnitt der Verhältnisse für jede der 3 Arten zu finden.
Warum ergeben die beiden Befehle unterschiedliche Ergebnisse bei der Verwendung von sqldf
in R?R, sqldf und avg für Ratio Durchschnitt
Da ist das Ziel, den Durchschnitt der Verhältnisse für jede der 3 Arten zu finden.
select species,
avg([Petal.Width]/[Petal.Length]) as petalratio
from iris
group by species
Diese Abfrage gibt den Mittelwert pro Art, wie Sie eine Aggregatfunktion avg
verwenden.
select species,
([Petal.Width]/[Petal.Length]) as petalratio
from iris
group by species
Diese Abfrage gibt nach dem Zufallsprinzip eine Zeile pro Spezies aus, da Sie keine Aggregatfunktion verwenden. Dies ist in den meisten Datenbanken nicht erlaubt, aber in SQLite erlaubt, welches die Standarddatenbank sqldf
verwendet.
Sie sollten die erste Abfrage mit avg
als das verwenden, was Sie versuchen zu tun.
Es ist ein Wunder, dass die untere Abfrage nicht fehlschlägt. Unzuverlässige Ergebnisse. Andere RDBMS würden das fangen. Aber natürlich lässt MySQL "only_full_group_by" aus und neue Benutzer werden falsch in SQL eingeführt! – Parfait
In SQLite gibt die zweite Abfrage das Verhältnis von Petal.Width/Petal.Length für die letzte Zeile jeder Species aus. –
Beide Kommentare waren sehr hilfreich, besonders @ G.Grothiedieck! – vashts85