3.1 ग्रुप बाय स्टेटमेंट
SQL भाषा बहुत शक्तिशाली है। सरल डेटा लाने के अलावा, यह आपको क्वेरी समय पर डेटा समूहित करने की अनुमति देता है। उदाहरण के लिए, हम जानना चाहते हैं कि हमारे पास प्रत्येक ब्रांड के कितने प्रकार के उत्पाद हैं, हम यह कैसे कर सकते हैं?
इसके लिए एक विशेष संचालिका होती है GROUP BY
, इसे इस प्रकार लिखा जाता है।
GROUP BY column
चलिए एक प्रश्न लिखते हैं जो SQL को प्रत्येक ब्रांड के लिए उत्पाद प्रकारों की संख्या प्रदर्शित करने के लिए कहता है। ऐसा अनुरोध कुछ ऐसा दिखाई देगा:
SELECT brand, COUNT(*)
FROM product
GROUP BY brand
आपको निम्न क्वेरी परिणाम मिलेगा:
ब्रैंड | गिनती करना(*) |
---|---|
(व्यर्थ) | 2 |
BOSCH | 4 |
Ikea | 6 |
एलजी | 2 |
स्मार्टफ्लॉवर | 1 |
आइए सावधानीपूर्वक विश्लेषण करें कि हमने किस प्रकार का अनुरोध लिखा और हमें किस प्रकार का परिणाम मिला। नतीजतन, हम दो कॉलम देखते हैं। ब्रांडों की सूची के साथ पहला, जो तार्किक है। हम "ब्रांड --> मात्रा" जोड़े के सेट जैसा कुछ प्राप्त करना चाहते थे ।
कृपया ध्यान दें कि ब्रांड नामों में एक शब्द है NULL
। दरअसल, हमारे पास उस ब्रांड के उत्पाद हैं जिसमें यह लिखा है NULL
, और हम उन्हें यहां देखते हैं। थोड़ा अप्रत्याशित, लेकिन मददगार। हम देख सकते हैं कि कितने गैर-ब्रांडेड उत्पाद हैं।
अब आइए अनुरोध पर करीब से नज़र डालें। हम प्रत्येक ब्रांड के उत्पादों की संख्या जानना चाहते थे, इसलिए हमने लिखा GROUP BY brand
, और हमने ब्रांड और अभिव्यक्ति SELECT
लिखीCOUNT(*)
COUNT(*)
एक तथाकथित समग्र कार्य है जो पंक्तियों के समूह पर किया जाता है। हमारे मामले में, वह बस उनकी संख्या गिनती है। ऐसे बहुत से कार्य हैं, और हम उन्हें थोड़ी देर बाद देखेंगे।
3.2 ग्रुप बाय के साथ जटिल प्रश्न
अब एक क्वेरी लिखते हैं जहां हम पहले उन उत्पादों को छोड़ देते हैं जिनकी कीमत 10 से कम है, और फिर उन्हें समूहित करते हैं। ऐसा अनुरोध कुछ ऐसा दिखाई देगा:
SELECT brand, COUNT(*)
FROM product
WHERE price > 10
GROUP BY brand
आपको निम्न क्वेरी परिणाम मिलेगा:
ब्रैंड | गिनती करना(*) |
---|---|
BOSCH | 4 |
Ikea | 5 |
एलजी | 2 |
स्मार्टफ्लॉवर | 1 |
हमारे परिणाम तालिका से सभी NULL उत्पाद गायब हो गए, क्योंकि वे बहुत सस्ते थे, और IKEA उत्पादों की संख्या 1. 6 से 5 तक घट गई।
इससे पता चलता है कि आप पहले WHERE
वांछित लाइनों को फ़िल्टर करने के लिए लागू करते हैं, और उसके बाद ही समूहीकरण को परिणाम पर लागू करते हैं।
3.3 परिणाम के कॉलम नाम
वैसे, आप परिणामी स्तंभों को नाम दे सकते हैं। देखें कि सर्वर ने नाम कैसे सुझाया count(*)
? आइए इसे कुल से बदलें। ऐसा अनुरोध कुछ ऐसा दिखाई देगा:
SELECT brand, COUNT(*) AS total
FROM product
WHERE price > 10
GROUP BY brand
आपको निम्न क्वेरी परिणाम मिलेगा:
ब्रैंड | कुल |
---|---|
BOSCH | 4 |
Ikea | 5 |
एलजी | 2 |
स्मार्टफ्लॉवर | 1 |
आप मौजूदा कॉलम का नाम भी बदल सकते हैं। आइए पहले इस्तेमाल किए गए प्रश्नों में से एक लेते हैं और कॉलम में नए नाम जोड़ते हैं।
SELECT
id AS product_id,
name AS product_name,
price
FROM product
WHERE price < 20 AND brand IS NOT NULL
आपको निम्न क्वेरी परिणाम मिलेगा:
उत्पाद आयडी | प्रोडक्ट का नाम | कीमत |
---|---|---|
2 | कुर्सी | 5.00 |
8 | चिराग | 15.00 |
GO TO FULL VERSION