Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में ORDER BY और अंकगणितीय अभिव्यक्ति से संख्यात्मक अंतर के अनुसार क्रमबद्ध करें

MySQL में दो संख्यात्मक कॉलम के अंतर (घटाव) के आधार पर परिणामों को क्रमबद्ध करने के लिए ORDER BY क्लॉज में सीधे अंकगणितीय अभिव्यक्ति का उपयोग करें। यह स्कोर अंतर, मार्जिन, विचलन, या किसी भी गणना किए गए अंतर के अनुसार क्रमबद्ध करने के लिए उपयोगी है।

सिंटैक्स

SELECT * FROM table_name ORDER BY (numeric_column1 - numeric_column2);

व्यावहारिक उदाहरण

टेबल बनाएं:

mysql> CREATE TABLE DemoTable1313 (
    Name VARCHAR(20),
    Score1 INT,
    Score2 INT
);

डेटा डालें:

mysql> INSERT INTO DemoTable1313 VALUES('Chris', 40, 60);
mysql> INSERT INTO DemoTable1313 VALUES('David', 70, 50);
mysql> INSERT INTO DemoTable1313 VALUES('Adam', 35, 30);

वर्तमान डेटा:

mysql> SELECT * FROM DemoTable1313;
+-------+--------+--------+
| Name  | Score1 | Score2 |
+-------+--------+--------+
| Chris | 40     | 60     |
| David | 70     | 50     |
| Adam  | 35     | 30     |
+-------+--------+--------+

संख्यात्मक अंतर (Score1 - Score2) के अनुसार आरोही क्रम

mysql> SELECT * FROM DemoTable1313 ORDER BY (Score1 - Score2);

परिणाम

+-------+--------+--------+
| Name  | Score1 | Score2 |
+-------+--------+--------+
| Chris | 40     | 60     |  -- अंतर: -20
| Adam  | 35     | 30     |  -- अंतर: 5
| David | 70     | 50     |  -- अंतर: 20
+-------+--------+--------+

अवरोही क्रम के लिए

SELECT * FROM DemoTable1313 ORDER BY (Score1 - Score2) DESC;
+-------+--------+--------+
| Name  | Score1 | Score2 |
+-------+--------+--------+
| David | 70     | 50     |  -- अंतर: 20
| Adam  | 35     | 30     |  -- अंतर: 5
| Chris | 40     | 60     |  -- अंतर: -20
+-------+--------+--------+

अंतर कॉलम के रूप में दिखाने के लिए

SELECT Name, Score1, Score2, (Score1 - Score2) AS Difference
FROM DemoTable1313
ORDER BY Difference;

उन्नत: निरपेक्ष अंतर (परिमाण) के अनुसार क्रमबद्ध करें

SELECT * FROM DemoTable1313 ORDER BY ABS(Score1 - Score2);
+-------+--------+--------+
| Name  | Score1 | Score2 |
+-------+--------+--------+
| Adam  | 35     | 30     |  -- |5| = 5
| Chris | 40     | 60     |  |-20| = 20
| David | 70     | 50     |  |20| = 20
+-------+--------+--------+

उपयोग के मामले

  • खेल: गोल अंतर, पॉइंट स्प्रेड
  • वित्त: बजट बनाम वास्तविक विचलन
  • गुणवत्ता: लक्ष्य बनाम मापा मूल्य अंतर
  • रैंकिंग: सुधार/गिरावट मापना

प्रदर्शन नोट

  • अभिव्यक्ति प्रत्येक पंक्ति के लिए गणना की जाती है - इंडेक्स उपयोग नहीं होता
  • बड़े डेटासेट के लिए, परिकलित कॉलम या सामग्रीकृत दृश्य पर विचार करें
  • EXPLAIN से Using filesort दिख सकता है

ORDER BY में अंकगणितीय अभिव्यक्ति MySQL की एक शक्तिशाली विशेषता है जो रनटाइम गणना के आधार पर लचीली क्रमबद्धता सक्षम करती है।

  1. - MySQL में GROUP BY से तारीखों के अनुसार रिकॉर्ड समूहित करें

    GROUP BY से ग्राहकवार न्यूनतम और अधिकतम शिपिंग तारीख प्राप्त करें ग्राहक नाम के अनुसार तारीखों को समूहित करके प्रत्येक ग्राहक की पहली और अंतिम शिपिंग तारीख पाएं। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable2002 ( CustomerName varchar(20), CustomerShippingDate datetime ); Query OK, 0 ro

  1. - MySQL में एकल INSERT से एकाधिक रिकॉर्ड तेजी से डालें

    बल्क इंसर्ट सिंटैक्स से प्रदर्शन सुधारें एक ही INSERT स्टेटमेंट में कई मान सेट अल्पविराम से अलग करके डालें। सिंटैक्स: insert into yourTableName values(val1,val2,...),(val1,val2,...),...; उदाहरण: mysql> create table DemoTable2007 ( Amount1 int, Amount2 int, Amount3 int ); Query OK, 0 rows affected

  1. - MySQL में TRUE/FALSE रिकॉर्ड को 0/1 के रूप में प्रदर्शित करें

    समाधान कॉलम को BOOLEAN (TINYINT(1) का पर्याय) के रूप में परिभाषित करें। उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2035 (Name, isMarried) VALUES (Chris, TRUE), (David, FALSE), (Bob, TRUE), (Mike, FALSE); परिणाम +----+-------+-----------+ | Id | Name | isMarried | +----+-------+----