आप MySQL से एग्रीगेट फ़ंक्शन COUNT() का उपयोग करके डेटाबेस पर क्षैतिज मान गिन सकते हैं। आइए पहले एक टेबल बनाते हैं -
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstValue int,
SecondValue int,
ThirdValue int,
FourthValue int
);
Query OK, 0 rows affected (0.59 sec)
insert कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड्स डालें -
mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue,FourthValue) VALUES (-18,45,0,155); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue,FourthValue) VALUES (0,235,NULL,15); Query OK, 1 row affected (0.20 sec)
select स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड्स प्रदर्शित करने के लिए निम्नलिखित क्वेरी -
mysql> select *from DemoTable;
यह निम्नलिखित आउटपुट उत्पन्न करेगा -
+----+------------+-------------+------------+-------------+ | Id | FirstValue | SecondValue | ThirdValue | FourthValue | +----+------------+-------------+------------+-------------+ | 1 | -18 | 45 | 0 | 155 | | 2 | 0 | 235 | NULL | 15 | +----+------------+-------------+------------+-------------+ 2 rows in set (0.00 sec)
डेटाबेस पर क्षैतिज मान गिनने की क्वेरी यहां है -
mysql> SELECT COUNT(FirstValue > 0 OR NULL) +
COUNT(SecondValue > 0 OR NULL) +
COUNT(ThirdValue > 0 OR NULL) +
COUNT(FourthValue > 0 OR NULL)
AS TOTAL_VALUE FROM DemoTable;
यह निम्नलिखित आउटपुट उत्पन्न करेगा -
+-------------+ | TOTAL_VALUE | +-------------+ | 4 | +-------------+ 1 row in set (0.00 sec)
व्याख्या:COUNT(expr)केवल उन पंक्तियों को गिनता है जहांexprNULL नहीं है।col > 0 OR NULLअभिव्यक्ति तब TRUE (गैर-NULL) होती है जबcol > 0, अन्यथा NULL। इसलिएCOUNT(col > 0 OR NULL)प्रति पंक्ति उस कॉलम के लिए सकारात्मक मानों की गणना करता है। योग क्षैतिज (प्रति पंक्ति) सकारात्मक मानों की कुल संख्या देता है। प्रति पंक्ति परिणाम के लिएGROUP BY Idजोड़ें।