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

MySQL में ऋणात्मक मानों के साथ हिस्टोग्राम कैसे प्रदर्शित करें?

MySQL में REVERSE(), RPAD(), REPEAT() का उपयोग करके ऋणात्मक मानों सहित हिस्टोग्राम बनाना

ऋणात्मक मानों को बाईं ओर और धनात्मक मानों को दाईं ओर दिखाने वाला टेक्स्ट-आधारित हिस्टोग्राम बनाने के लिए स्ट्रिंग फ़ंक्शन का चतुराई से उपयोग करें।

उदाहरण के साथ पूर्ण कार्यान्वयन

टेबल बनाना

mysql> CREATE TABLE DemoTable632 (
    histogramId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    histogramValue INT,
    histogramImage TEXT
);

रिकॉर्ड डालना (धनात्मक और ऋणात्मक)

mysql> INSERT INTO DemoTable632(histogramValue) VALUES(2), (3), (-6), (-5);

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable632;

आउटपुट:

+-------------+----------------+----------------+
| histogramId | histogramValue | histogramImage |
+-------------+----------------+----------------+
| 1           | 2              | NULL           |
| 2           | 3              | NULL           |
| 3           | -6             | NULL           |
| 4           | -5             | NULL           |
+-------------+----------------+----------------+
4 rows in set (0.00 sec)

हिस्टोग्राम जनरेट करने की क्वेरी

mysql> SELECT histogramId, histogramValue,
    CONCAT(
        REVERSE(RPAD(REPEAT('*', IF(histogramValue < 0, -histogramValue, 0)), 100, ' ')),
        REPEAT('*', IF(histogramValue < 0, 0, histogramValue))
    ) AS histogramImage
FROM DemoTable632 
ORDER BY histogramId;

आउटपुट:

+-------------+----------------+----------------+
| histogramId | histogramValue | histogramImage |
+-------------+----------------+----------------+
| 1           | 2              | **             |
| 2           | 3              | ***            |
| 3           | -6             | ******         |
| 4           | -5             | *****          |
+-------------+----------------+----------------+
4 rows in set (0.00 sec)

एल्गोरिदम व्याख्या:

धनात्मक मान (2, 3):

  • IF(histogramValue < 0, -histogramValue, 0) → 0 (बाएं पैडिंग के लिए)
  • REPEAT('*', 0) → खाली स्ट्रिंग
  • RPAD('', 100, ' ') → 100 स्पेस
  • REVERSE(...) → 100 स्पेस (दाएं पैडिंग बन जाता है)
  • REPEAT('*', histogramValue) → '**' या '***' (दाएं तारे)
  • परिणाम: स्पेस फिर तारे (दाईं ओर बार)

ऋणात्मक मान (-6, -5):

  • IF(histogramValue < 0, -histogramValue, 0) → 6 या 5 (बाएं बार लंबाई)
  • REPEAT('*', 6) → '******'
  • RPAD('******', 100, ' ') → '******' + 94 स्पेस
  • REVERSE(...) → 94 स्पेस + '******' (बाएं तारे)
  • REPEAT('*', 0) → खाली (दाएं कुछ नहीं)
  • परिणाम: तारे फिर स्पेस (बाईं ओर बार)

सुधारित संस्करण (स्केलिंग के साथ)

SELECT histogramId, histogramValue,
    CONCAT(
        REVERSE(RPAD(REPEAT('*', IF(v < 0, -v * scale, 0)), max_width, ' ')),
        REPEAT('*', IF(v < 0, 0, v * scale))
    ) AS histogramImage
FROM DemoTable632
CROSS JOIN (SELECT 2 AS scale, 50 AS max_width) params
ORDER BY histogramId;

वास्तविक चार्टिंग के लिए

उत्पादन एप्लिकेशन में, डेटा को एप्लिकेशन लेयर (Python/JS/Chart.js) में लाकर उचित विज़ुअलाइज़ेशन लाइब्रेरी का उपयोग करें। SQL-आधारित हिस्टोग्राम केवल त्वरित एडमिन/डीबग दृश्य के लिए उपयुक्त हैं।

  1. PHP और MySQL में  बूलियन  मानों को कैसे संभालें? PHP और MySQL में 'बूलियन' मानों को कैसे संभालें?

    MySQL में बूलियन डेटा प्रकार समझना MySQL 8.0.12 में बूलियन मानों को संभालने के लिए आप BOOL, BOOLEAN या TINYINT(1) का उपयोग कर सकते हैं। जब आप BOOL या BOOLEAN का उपयोग करते हैं, तो MySQL आंतरिक रूप से इसे TINYINT(1) में परिवर्तित कर देता है। बूलियन लिटरल का प्रतिनिधित्व BOOL या BOOLEAN डेटा प्रकार

  1. - MySQL में IN क्लॉज और ORDER BY FIELD से निर्दिष्ट क्रम में पंक्तियां चुनें

    IN() और FIELD() से कस्टम क्रम में परिणाम प्राप्त करें IN() क्लॉज से विशिष्ट मान चुनें और FIELD() फ़ंक्शन से कस्टम क्रम में सॉर्ट करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1986 ( Number int ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTable1986 values(50); .

  1. Java में JDBC ResultSet से MySQL टेबल मान प्रदर्शित करें Java में JDBC ResultSet से MySQL टेबल मान प्रदर्शित करें

    टेबल और डेटा insert into demo87 values(John,21), (David,23), (Bob,22); Java कोड: ResultSet से HashMap में डेटा import java.sql.*; import java.util.*; import com.mysql.jdbc.Statement; public class TableValuesDemo { public static void main(String[] args) { Connection con = null;