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

MySQL में सबक्वेरी का उपयोग करके प्रत्येक पंक्ति के लिए मान की कुल घटनाओं की गिनती प्राप्त करना

MySQL में सहसंबद्ध सबक्वेरी (correlated subquery) का उपयोग करके प्रत्येक पंक्ति के लिए उस मान की टेबल में कुल घटनाओं की गिनती प्राप्त करें।

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable (
    -> Value INT
    -> );
Query OK, 0 rows affected (0.61 sec)
mysql> INSERT INTO DemoTable VALUES(20), (30), (20), (40), (30), (20);

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

mysql> SELECT * FROM DemoTable;

आउटपुट

+-------+
| Value |
+-------+
| 20    |
| 30    |
| 20    |
| 40    |
| 30    |
| 20    |
+-------+
6 rows in set (0.00 sec)

मान 20: 3 बार, 30: 2 बार, 40: 1 बार।

प्रति पंक्ति घटना गिनती के साथ चुनना

mysql> SELECT tbl.Value,
    -> (SELECT COUNT(*) FROM DemoTable WHERE Value = tbl.Value) AS Occurrence
    -> FROM DemoTable tbl;

आउटपुट

+-------+------------+
| Value | Occurrence |
+-------+------------+
| 20    | 3          |
| 30    | 2          |
| 20    | 3          |
| 40    | 1          |
| 30    | 2          |
| 20    | 3          |
+-------+------------+
6 rows in set (0.00 sec)

व्याख्या: बाहरी क्वेरी की प्रत्येक पंक्ति के लिए (एलियास tbl), आंतरिक सबक्वेरी उस मान की कुल गिनती लौटाती है।

प्रदर्शन चेतावनी: बड़ी टेबल पर धीमा (प्रति पंक्ति सबक्वेरी निष्पादन)।

बेहतर दृष्टिकोण (विंडो फ़ंक्शन - MySQL 8.0+):

SELECT Value, COUNT(*) OVER (PARTITION BY Value) AS Occurrence FROM DemoTable;

या JOIN के साथ एग्रीगेशन:

SELECT t.Value, agg.cnt AS Occurrence
FROM DemoTable t
JOIN (SELECT Value, COUNT(*) AS cnt FROM DemoTable GROUP BY Value) agg
  ON t.Value = agg.Value;

ये दृष्टिकोण बड़ी टेबल के लिए बहुत तेज़ हैं।

  1. - MySQL में एक क्वेरी से एकाधिक पंक्तियां कैसे प्राप्त करें

    IN() ऑपरेटर के साथ एकाधिक ID वाली पंक्तियां चुनना एक ही क्वेरी में कई विशिष्ट ID वाली पंक्तियां प्राप्त करने के लिए WHERE id IN (val1, val2, ...) का उपयोग करें। टेबल और डेटा CREATE TABLE DemoTable ( Id INT, Name VARCHAR(100) ); Query OK, 0 rows affected (0.60 sec) INSERT INTO DemoTable V

  1. - MySQL में चौथा सबसे बड़ा मान कैसे प्राप्त करें

    LIMIT OFFSET के साथ N-वां सबसे बड़ा मान अवरोही क्रम में क्रमबद्ध करके LIMIT 1 OFFSET N-1 से N-वां सबसे बड़ा मान प्राप्त करें। चौथे सबसे बड़े के लिए OFFSET 3। टेबल और डेटा CREATE TABLE DemoTable ( Amount INT ); Query OK, 0 rows affected (0.88 sec) INSERT INTO DemoTable VALUES(198); Query OK,

  1. - MySQL में समय अंतर निकालें: NOW() और INTERVAL के साथ

    MySQL में NOW() और INTERVAL का उपयोग करके वर्तमान समय से निर्दिष्ट अवधि पहले/बाद के रिकॉर्ड ढूंढ सकते हैं। उदाहरण: पिछले 5 घंटे में आगमन समय 1. टेबल बनाएं CREATE TABLE DemoTable1570 (ArrivalTime DATETIME); 2. डेटा डालें INSERT INTO DemoTable1570 VALUES(2019-10-15 16:10:00); 3. वर्तमान समय मान