2011-11-15 13 views
7

Bir sütun için ortalama değeri yanı sıra bir koşullu aynı sütun için ortalama değer almak mümkün mü? ya da sadece bu iki sorguyu bir araya getirmek için.mysql ort koşullu

SELECT AVG(field) from table 

SELECT AVG (field) from table where col = some_val 

yerli MySQL işlevleri kullanarak bunları birleştirmek için basit bir yol yoksa, saklı bir fonksiyon bunu ya bir kullanıcı tanımlı fonksiyon işlemek mümkün olacaktır?

select avg(amt) as average, 
     avg(case when col=some_val then amt else null end) as conditionalAverage 
    from myTable; 

Numune Demo: null değerleri toplama işlevleri dahil değildir aslında yararlanarak

cevap

7

Başka bir yol var,

select 
    avg(amt) as average, 
    avg(if(col=some_val,amt,null)) as conditionalAverage 
from myTable