को देखते हुए करने के लिए:एसक्यूएल आवृत्ति वितरण क्वेरी समूह-से साथ पर्वतमाला गिनती और शामिल 0 मायने रखता है
table 'thing':
age
---
3.4
3.4
10.1
40
45
49
मैं हर 10 साल श्रृंखला के लिए चीजों की संख्या की गणना करना चाहते हैं, जैसे,
age_range | count
----------+-------
0 | 2
10| 1
20| 0
30| 0
40| 3
इस क्वेरी करीब आता है:
SELECT FLOOR(age/10) as age_range, COUNT(*)
FROM thing
GROUP BY FLOOR(age/10) ORDER BY FLOOR(age/10);
आउटपुट:
age_range | count
-----------+-------
0 | 1
1 | 2
4 | 3
हालांकि, यह मुझे उन श्रेणियों को नहीं दिखाता है जिनमें 0 अंक हैं। मैं क्वेरी को कैसे संशोधित कर सकता हूं ताकि यह 0 गणनाओं के बीच की श्रेणियों को भी दिखा सके?
मुझे गिनती श्रेणियों के लिए समान स्टैक ओवरफ्लो प्रश्न मिले, कुछ 0 गणनाओं के लिए, लेकिन उनमें प्रत्येक श्रेणी निर्दिष्ट करने (या तो क्वेरी में श्रेणियों को हार्ड-कोडिंग करना, या किसी तालिका में श्रेणियां डालना) शामिल होना शामिल है। मैं ऊपर की तरह एक सामान्य क्वेरी का उपयोग करना पसंद करूंगा जहां मुझे प्रत्येक सीमा को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता नहीं है (उदा।, 0-10, 10-20, 20-30, ...)। मैं PostgreSQL 9.1.3 का उपयोग कर रहा हूँ।
क्या 0 गणनाओं को शामिल करने के लिए ऊपर दी गई सरल क्वेरी को संशोधित करने का कोई तरीका है?
समान:
Oracle: how to "group by" over a range?
Get frequency distribution of a decimal range in MySQL
यह अच्छा है नहीं था अगर। जानना अच्छा काम है। – Glenn
सुरुचिपूर्ण उत्तर, @mu_is_too_short! मैंने इसे आजमाया और यह काम आया। मुझे इसकी ही खोज थी। धन्यवाद! –
@Glenn: हाँ, 'gener_series' पागल-उपयोगी है, यह टाइमस्टैम्प के साथ भी अलविदा अलविदा कैलेंडर टेबल के साथ काम कर सकता है। –