दो कॉलम में मानों की जोड़ी (क्रम की परवाह किए बिना) की घटनाएं गिनने के लिए GREATEST() और LEAST() फ़ंक्शन के साथ GROUP BY का उपयोग करें।
उदाहरण: नाम जोड़े की घटनाएं गिनना
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable (
-> Name1 VARCHAR(20),
-> Name2 VARCHAR(20)
-> );
2. डेटा डालें
mysql> INSERT INTO DemoTable VALUES('John', 'Adam');
mysql> INSERT INTO DemoTable VALUES('Chris', 'David');
mysql> INSERT INTO DemoTable VALUES('Robert', 'Mike');
mysql> INSERT INTO DemoTable VALUES('David', 'Chris'); -- उल्टा क्रम
mysql> INSERT INTO DemoTable VALUES('Mike', 'Robert'); -- उल्टा क्रम
3. डेटा देखें
mysql> SELECT * FROM DemoTable;
+--------+--------+ | Name1 | Name2 | +--------+--------+ | John | Adam | | Chris | David | | Robert | Mike | | David | Chris | | Mike | Robert | +--------+--------+
4. जोड़ी घटनाएं गिनें
mysql> SELECT GREATEST(Name1, Name2), LEAST(Name1, Name2), COUNT(*) AS Occurrences
-> FROM DemoTable
-> GROUP BY GREATEST(Name1, Name2), LEAST(Name1, Name2);
5. परिणाम
+-----------------------+--------------------+-------------+ | GREATEST(Name1,Name2) | LEAST(Name1,Name2) | Occurrences | +-----------------------+--------------------+-------------+ | John | Adam | 1 | | David | Chris | 2 | | Robert | Mike | 2 | +-----------------------+--------------------+-------------+
कैसे काम करता है
GREATEST(a,b)- वर्णानुक्रम में बड़ा मानLEAST(a,b)- वर्णानुक्रम में छोटा मान- दोनों जोड़कर क्रम-स्वतंत्र कुंजी बनाते हैं
GROUP BYइस कुंजी पर समूह बनाता है
संख्याओं के लिए
SELECT GREATEST(Val1, Val2), LEAST(Val1, Val2), COUNT(*) FROM DemoTable GROUP BY GREATEST(Val1, Val2), LEAST(Val1, Val2);
उपयोग के मामले
- द्विदिश संबंध विश्लेषण (मित्रता, संदेश)
- ग्राफ एज गिनती
- डुप्लिकेट जोड़ी पहचान