MySQL में GROUP BY -columnName का उपयोग करके आप सकारात्मक और नकारात्मक मानों को एक साथ समूहित कर सकते हैं (उनके निरपेक्ष मान के अनुसार)। यह चाल ऋण चिह्न का उपयोग करके मान को नकारात्मक बनाती है, जिससे +10 और -10 दोनों -10 हो जाते हैं और एक साथ समूहित होते हैं।
उदाहरण तालिका बनाना
mysql> CREATE TABLE DemoTable (Value INT);
सकारात्मक और नकारात्मक मान डालना
mysql> INSERT INTO DemoTable VALUES (-10), (-20), (20), (10), (-10), (-10), (-20), (-30), (30);
सभी मान देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------+ | Value | +-------+ | -10 | | -20 | | 20 | | 10 | | -10 | | -10 | | -20 | | -30 | | 30 | +-------+
सकारात्मक/नकारात्मक द्वारा समूहित करना
mysql> SELECT * FROM DemoTable GROUP BY -Value;
आउटपुट:
+-------+ | Value | +-------+ | -10 | | -20 | | 20 | | 10 | | -30 | | 30 | +-------+
व्याख्या:
GROUP BY -Valueप्रत्येक मान को नकारात्मक बनाता है: -10→10, 10→-10, -20→20, 20→-20- फिर इन परिवर्तित मानों द्वारा समूहित करता है
- प्रत्येक समूह से पहली पंक्ति लौटाई जाती है (MySQL एक्सटेंशन: ONLY_FULL_GROUP_BY अक्षम होने पर)
- परिणाम: प्रत्येक निरपेक्ष मान के लिए एक प्रतिनिधि पंक्ति
नोट: यह व्यवहार MySQL के ONLY_FULL_GROUP_BY SQL मोड पर निर्भर करता है। सख्त मोड में, गैर-एग्रीगेट कॉलम चुनने के लिए एग्रीगेट फ़ंक्शन की आवश्यकता होती है:
SELECT Value, COUNT(*) FROM DemoTable GROUP BY ABS(Value);
ABS() फ़ंक्शन अधिक स्पष्ट और पोर्टेबल है।
चेतावनी: GROUP BY -Value एक MySQL-विशिष्ट ट्रिक है। मानक SQL के लिए GROUP BY ABS(Value) या GROUP BY CASE WHEN Value < 0 THEN -Value ELSE Value END उपयोग करें।