Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में माध्यिका की गणना कैसे करें

एक चर के विशिष्ट लेनदेन मूल्य को खोजने के लिए आपको संख्याओं के एक सेट जैसे बिक्री, आदि के माध्यिका की गणना करने की आवश्यकता हो सकती है। SQL क्वेरी का उपयोग करके आपको MySQL में माध्यिका की गणना करने की आवश्यकता है क्योंकि इसके लिए कोई फ़ंक्शन नहीं है। यहाँ MySQL में माध्यिका की गणना करने के लिए एक सरल क्वेरी है।

MySQL में माध्यिका की गणना कैसे करें

यहाँ MySQL में माध्यिका की गणना करने के चरण दिए गए हैं। मान लें कि आपके पास निम्न तालिका है

CREATE TABLE exams (
id int(11) NOT NULL auto_increment,
dt date,
score int,
PRIMARY KEY (id)
);

insert into exams (dt,score) values ('2019-01-01',70);
insert into exams (dt,score) values ('2019-02-01',77);
insert into exams (dt,score) values ('2019-03-01',71);
insert into exams (dt,score) values ('2019-04-01',70);

insert into exams (dt,score) values ('2019-05-01',89);
insert into exams (dt,score) values ('2019-06-01',87);
insert into exams (dt,score) values ('2019-07-01',88);
insert into exams (dt,score) values ('2019-08-01',89);

mysql> select * from exams;
+------+------------+-------+
| id   |     dt     | score |
+------+------------+-------+
|   1  | 2019-01-01 |   70  |
|   2  | 2019-02-01 |   77  |
|   3  | 2019-03-01 |   71  |
|   4  | 2019-04-01 |   70  |
|   5  | 2019-05-01 |   89  |
|   6  | 2019-06-01 |   87  |
|   7  | 2019-07-01 |   88  |
|   8  | 2019-08-01 |   89  |
+------+------------+-------+

मान लीजिए कि आप तालिका के लिए माध्यिका प्राप्त करना चाहते हैं। माध्यिका संख्याओं की एक सरणी में मध्य आइटम का मान है जिसे क्रमबद्ध किया गया है। यदि सरणी में सम संख्या में आइटम हैं, तो माध्य मध्य 2 मानों का औसत है।

MySQL में माध्यिका की गणना करें

यहाँ स्कोर कॉलम के लिए माध्यिका की गणना करने के लिए SQL क्वेरी है

SELECT AVG(dd.score) as median_val
FROM (
SELECT d.score, @rownum:=@rownum+1 as `row_number`, @total_rows:=@rownum
  FROM exams d, (SELECT @rownum:=0) r
  WHERE d.score is NOT NULL
  -- put some where clause here
  ORDER BY d.score
) as dd
WHERE dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) );

+------------+
| median_val |
+------------+
|    82.00   |
+------------+

आइए उपरोक्त क्वेरी को विस्तार से देखें। हम इस मामले में एक SQL सबक्वायरी का उपयोग करते हैं। आंतरिक क्वेरी @rownum को वृद्धिशील अनुक्रमणिका के रूप में निर्दिष्ट करती है और चयनित मानों को क्रमबद्ध करती है। पहले पास के अंत में, @total_rows में चयनित पंक्तियों की पंक्ति गणना होगी। बाहरी क्वेरी माध्यिका निर्धारित करने के लिए @total_rows का उपयोग करती है, भले ही मान विषम या सम संख्या में हों।

फिल्टर लगाने के बाद MySQL में माध्यिका की गणना करें

मान लें कि आप केवल उन मानों के लिए माध्यिका की गणना करना चाहते हैं जो 80 (>80) से अधिक हैं। जैसा कि नीचे दिखाया गया है, आप बस ऊपर अपनी क्वेरी में जहां क्लॉज जोड़कर ऐसा कर सकते हैं (फ़िल्टर की स्थिति बोल्ड में उल्लिखित है) )

SELECT AVG(dd.score) as median_val
FROM (
SELECT d.score, @rownum:=@rownum+1 as `row_number`, @total_rows:=@rownum
  FROM exams d, (SELECT @rownum:=0) r
  WHERE d.score is NOT NULL
  AND d.score>80
  ORDER BY d.score
) as dd
WHERE dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) );

+------------+
| median_val |
+------------+
|    88.50   |
+------------+

ग्राफ़/रिपोर्ट पर माध्यिका रेखा कैसे प्लॉट करें

मान लें कि आप अपनी रिपोर्ट पर डेटा मानों के साथ-साथ माध्यिका मान प्रदर्शित करना चाहते हैं। उस स्थिति में, जैसा कि नीचे दिखाया गया है, आप अपनी मूल डेटा तालिका के साथ अपनी माध्यिका परिणाम तालिका में बस एक क्रॉस जोड़ सकते हैं।

select * from exams,
(
SELECT AVG(dd.score) as median_val
FROM (
SELECT d.score, @rownum:=@rownum+1 as `row_number`, @total_rows:=@rownum
 FROM exams d, (SELECT @rownum:=0) r
 WHERE d.score is NOT NULL
 -- put some where clause here
 ORDER BY d.score
) as dd
WHERE dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) )
) temp;

+------+------------+-------+------------+
| id   |     dt     | score | median_val |
+------+------------+-------+------------+
|   1  | 2019-01-01 |   70  |   82.0000  |
|   2  | 2019-02-01 |   77  |   82.0000  |
|   3  | 2019-03-01 |   71  |   82.0000  |
|   4  | 2019-04-01 |   70  |   82.0000  |
|   5  | 2019-05-01 |   89  |   82.0000  |
|   6  | 2019-06-01 |   87  |   82.0000  |
|   7  | 2019-07-01 |   88  |   82.0000  |
|   8  | 2019-08-01 |   89  |   82.0000  |
+------+------------+-------+------------+

उपरोक्त प्रश्न में, हमने परीक्षाओं . के बीच एक क्रॉस जॉइन किया है माध्यिका क्वेरी के परिणाम वाली तालिका (temp . के रूप में लेबल किया गया) )

Ubiq का उपयोग करके बनाए गए लाइन चार्ट पर प्लॉट किए गए उपरोक्त डेटा का एक उदाहरण यहां दिया गया है।

आप MySQL में माध्यिका की गणना करने के लिए अपनी आवश्यकता के अनुसार उपरोक्त प्रश्नों को अनुकूलित कर सकते हैं। FYI करें, MariaDB मानों के एक स्तंभ के लिए मीडिया की गणना करने के लिए एक आउट-ऑफ-द-बॉक्स फ़ंक्शन MEDIAN() प्रदान करता है।

यदि आप MySQL डेटाबेस से चार्ट, डैशबोर्ड और रिपोर्ट बनाना चाहते हैं, तो आप Ubiq आज़मा सकते हैं। हम 14-दिन का निःशुल्क परीक्षण प्रदान करते हैं।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ लास्ट आईडी इंसर्ट करवाएं

  2. डे () उदाहरण – MySQL

  3. Ubuntu पर MySQL को कैसे परिनियोजित करें और पूरी तरह से प्रबंधित करें

  4. मूल्यों की सूची में नहीं के लिए MySQL चर प्रारूप

  5. MySQL में पूर्ण-पाठ खोज:द गुड, द बैड एंड द अग्ली