MySQL में SUM() और CASE से सशर्त योग करें
फ़ील्ड मानों के आधार पर योग करने के लिए, एग्रीगेट फ़ंक्शन SUM() के साथ CASE स्टेटमेंट का उपयोग करें। आइए पहले एक टेबल बनाते हैं:
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Price int,
isValidCustomer boolean,
FinalPrice int
); Query OK, 0 rows affected (0.23 sec)
इन्सर्ट कमांड से टेबल में कुछ रिकॉर्ड डालें:
mysql> insert into DemoTable(Price,isValidCustomer,FinalPrice) values(20,false,40); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable(Price,isValidCustomer,FinalPrice) values(45,true,10); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable(Price,isValidCustomer,FinalPrice) values(89,true,50); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable(Price,isValidCustomer,FinalPrice) values(200,false,100); Query OK, 1 row affected (0.06 sec)
सेलेक्ट स्टेटमेंट से टेबल के सभी रिकॉर्ड प्रदर्शित करें:
mysql> select *from DemoTable;
आउटपुट:
+----+-------+-----------------+------------+ | Id | Price | isValidCustomer | FinalPrice | +----+-------+-----------------+------------+ | 1 | 20 | 0 | 40 | | 2 | 45 | 1 | 10 | | 3 | 89 | 1 | 50 | | 4 | 200 | 0 | 100 | +----+-------+-----------------+------------+ 4 rows in set (0.00 sec)
MySQL में फ़ील्ड मान के आधार पर योग करने का क्वेरी। यहां FALSE (0) के लिए FinalPrice जुड़ेगा, जबकि TRUE (1) के लिए Price जुड़ेगा:
mysql> select sum(case when isValidCustomer=true then Price else FinalPrice end) as TotalPrice from DemoTable;
आउटपुट:
+------------+ | TotalPrice | +------------+ | 274 | +------------+ 1 row in set (0.00 sec)
गणना: पंक्ति 1: false → FinalPrice=40, पंक्ति 2: true → Price=45, पंक्ति 3: true → Price=89, पंक्ति 4: false → FinalPrice=100। कुल = 40+45+89+100 = 274।