३.१ विधानानुसार गट
SQL भाषा खूप शक्तिशाली आहे. साध्या डेटा आणण्याव्यतिरिक्त, ते आपल्याला क्वेरीच्या वेळी डेटा गटबद्ध करण्यास अनुमती देते. उदाहरणार्थ, आम्हाला प्रत्येक ब्रँडची किती प्रकारची उत्पादने आहेत हे जाणून घ्यायचे आहे, आम्ही ते कसे करू शकतो?
यासाठी एक विशेष ऑपरेटर आहे GROUP BY
, ते कसे लिहिले आहे ते येथे आहे.
GROUP BY column
चला एक क्वेरी लिहू जी SQL ला प्रत्येक ब्रँडसाठी उत्पादन प्रकारांची संख्या प्रदर्शित करण्यास सांगते. अशी विनंती यासारखे काहीतरी दिसेल:
SELECT brand, COUNT(*)
FROM product
GROUP BY brand
तुम्हाला खालील क्वेरी परिणाम मिळेल:
ब्रँड | गणना(*) |
---|---|
(निरर्थक) | 2 |
बॉश | 4 |
IKEA | 6 |
एलजी | 2 |
स्मार्टफ्लॉवर | १ |
आम्ही कोणत्या प्रकारची विनंती लिहिली आणि आम्हाला कोणत्या प्रकारचे परिणाम मिळाले याचे काळजीपूर्वक विश्लेषण करूया. परिणामी, आपल्याला दोन स्तंभ दिसतात. ब्रँडच्या सूचीसह प्रथम, जे तार्किक आहे. आम्हाला जोड्यांच्या संचासारखे काहीतरी "ब्रँड --> मात्रा" मिळवायचे होते .
कृपया लक्षात घ्या की ब्रँड नावांमध्ये एक शब्द आहे NULL
. खरंच, आमच्याकडे त्या ब्रँडमध्ये उत्पादने आहेत ज्यामध्ये ते लिहिलेले आहे NULL
आणि आम्ही ते येथे पाहतो. थोडे अनपेक्षित, पण उपयुक्त. तेथे किती अनब्रँडेड उत्पादने आहेत ते आपण पाहू शकतो.
आता विनंती जवळून पाहू. आम्हाला प्रत्येक ब्रँडच्या उत्पादनांची संख्या जाणून घ्यायची होती, म्हणून आम्ही लिहिले GROUP BY brand
, आणि आम्ही ब्रँड आणि अभिव्यक्ती SELECT
लिहिलीCOUNT(*)
COUNT(*)
हे एक तथाकथित एकूण कार्य आहे जे पंक्तींच्या गटावर केले जाते. आमच्या बाबतीत, ती फक्त त्यांची संख्या मोजते. अशी बरीच फंक्शन्स आहेत आणि आम्ही त्यांना थोड्या वेळाने पाहू.
3.2 GROUP BY सह जटिल प्रश्न
आता आपण एक क्वेरी लिहू या जिथे आपण प्रथम 10 पेक्षा कमी किंमत असलेल्या उत्पादनांचा त्याग करू आणि नंतर त्यांचे गट करू. अशी विनंती यासारखे काहीतरी दिसेल:
SELECT brand, COUNT(*)
FROM product
WHERE price > 10
GROUP BY brand
तुम्हाला खालील क्वेरी परिणाम मिळेल:
ब्रँड | गणना(*) |
---|---|
बॉश | 4 |
IKEA | ५ |
एलजी | 2 |
स्मार्टफ्लॉवर | १ |
आमच्या परिणाम सारणीतून सर्व NULL उत्पादने गायब झाली, कारण ती खूप स्वस्त होती आणि IKEA उत्पादनांची संख्या 1 ने कमी झाली. 6 ते 5.
हे सूचित करते की आपण प्रथम WHERE
फिल्टरसाठी इच्छित ओळी लागू करा आणि त्यानंतरच निकालावर गटबद्ध करा.
3.3 निकालाची स्तंभ नावे
तसे, आपण परिणामी स्तंभांना नावे देऊ शकता. सर्व्हरने नाव कसे सुचवले ते पहा count(*)
? चला ते एकूण सह बदलू. अशी विनंती यासारखे काहीतरी दिसेल:
SELECT brand, COUNT(*) AS total
FROM product
WHERE price > 10
GROUP BY brand
तुम्हाला खालील क्वेरी परिणाम मिळेल:
ब्रँड | एकूण |
---|---|
बॉश | 4 |
IKEA | ५ |
एलजी | 2 |
स्मार्टफ्लॉवर | १ |
तुम्ही विद्यमान स्तंभांचे नाव देखील बदलू शकता. चला पूर्वी वापरलेल्या क्वेरींपैकी एक घेऊ आणि स्तंभांना नवीन नावे जोडू.
SELECT
id AS product_id,
name AS product_name,
price
FROM product
WHERE price < 20 AND brand IS NOT NULL
तुम्हाला खालील क्वेरी परिणाम मिळेल:
उत्पादन_आयडी | उत्पादनाचे नांव | किंमत |
---|---|---|
2 | खुर्ची | ५.०० |
8 | दिवा | १५.०० |