sql - हाइव एसक्यूएल:गिनती और औसत




count hive average (2)

मैं हाल ही में हाइव सीखने की कोशिश कर रहा हूं और मुझे एक एसक्यूएल परामर्श के साथ समस्या है। मेरे पास कुछ जानकारी के साथ एक json फ़ाइल है मैं प्रत्येक रजिस्टर के लिए औसत प्राप्त करना चाहता हूं। उदाहरण में बेहतर:

country  times
USA      1
USA      1
USA      1
ES       1
ES       1
ENG      1
FR       1

तो अगले परामर्श के साथ:

select country, count(*) from data;

मुझे मिला:

country   times
USA        3
ES         2
ENG        1 
FR         1

तो मुझे आगे निकल जाना चाहिए:

country   avg
USA       0,42  (3/7)
ES        0,28  (2/7)
ENG       0,14  (1/7)
FR        0,14  (1/7)

मुझे नहीं पता कि मैं यह कैसे पहली तालिका से प्राप्त कर सकता हूं।

मैंने कोशिश की:

select t1.country, avg(t1.tm), 
from (
    select country,count(*)as tm from data where not country is null group by country
) t1
group by t1.country;

लेकिन मेरे बाहर गलत है

मदद के लिए धन्यवाद!! बी आर।


Answers

परिणाम प्राप्त करने के लिए कुल गिनती से प्रत्येक समूह को गिनें। अपनी तालिका में रिकॉर्ड की कुल संख्या को खोजने के लिए Sub-Query का उपयोग करें

इसे इस्तेमाल करे

select t1.country, count(*)/IFNULL((select cast(count(*) as float) from data),0)
from data
group by t1.country;

एक शून्य कॉलम जोड़ते समय, WITH VALUES यह सुनिश्चित होगा कि मौजूदा पंक्तियों पर विशिष्ट DEFAULT मान लागू किया गया हो:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES






sql count hive average