2016-04-08 21 views
0

yılında avg (col) ait MAX belirleyin: Ben ortalama geliş gecikmesi (arrdelay) en yüksek olduğu hedef Havaalanı (dest) almak istiyorumşöyle bir tablo var Hive

year     int           
month     int           
dayofmonth    int           
deptime     int           
uniquecarrier   string          
flightnum    int           
arrdelay    int           
origin     string          
dest     string          

.

Ben şu anda ne var gibi bir şey ham kaçınmak istiyorum:

select dest, avg(arrdelay) as average from flightdelays GROUP BY dest ORDER BY average DESC LIMIT 1; 

Ben her türlü şeyi denedim ama hiçbir şey şimdiye kadar çalışır. Aslında maksimum ortalama süre kendisini alabilirsiniz:

select MAX(avgtime) from (SELECT dest as destination, avg(arrdelay) as avgtime FROM flightdelays GROUP BY dest) as maxdelay; 

ama bu değiştirerek işe yaramaz - sadece bana yukarıdan hedef seçmek için izin vermeyecektir.

Herhangi bir fikrin var mı?

Teşekkür

cevap

0

İlk sorguda ilgili ham ne anlama geliyor? Sadece 'dest' olmasını ve ortalamanın değerini değil mi?

Eğer öyleyse, seçmek ek kullanmayı düşünün:

select dest from (select dest, avg(arrdelay) as average from flightdelays GROUP BY dest ORDER BY average DESC LIMIT 1); 

Hive sizin select deyiminde olmayan bir alanla 'tarafından sipariş' 'grup' tarafından bir kullanabilir veya izin vermez, ancak Mysql örneğin yapar.