2011-11-15 5 views
7

पर mysql औसत पर कॉलम के लिए औसत मान प्राप्त करना संभव है, साथ ही एक सशर्त के साथ उसी कॉलम के औसत मूल्य को प्राप्त करना संभव है? या बस इन दो प्रश्नों को एक साथ जोड़ना।सशर्त

SELECT AVG(field) from table 

SELECT AVG (field) from table where col = some_val 

अगर वहाँ देशी mysql कार्यों का उपयोग कर उन्हें गठबंधन करने के लिए एक आसान तरीका नहीं है, एक संग्रहीत समारोह यह है, या एक उपयोगकर्ता परिभाषित समारोह को संभालने में सक्षम हो सकता है?

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

नमूना डेमो::

उत्तर

18

तथ्य यह है कि null मूल्यों कुल कार्यों में शामिल नहीं हैं का लाभ उठाते हुए, हम एक CASE बयान औसत नियंत्रित करने के लिए है, तो निम्न में के रूप में उपयोग कर सकते हैं http://sqlize.com/2IXwbWD2Eb

7

एक और तरीका है, मामले का उपयोग नहीं करते समय

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