2017-07-05 2 views

Antwort

2
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.

+1

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

+1

In SQLite gibt die zweite Abfrage das Verhältnis von Petal.Width/Petal.Length für die letzte Zeile jeder Species aus. –

+0

Beide Kommentare waren sehr hilfreich, besonders @ G.Grothiedieck! – vashts85