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

SQL में अवधारण दर की गणना कैसे करें?

अवधारण दर को उन ग्राहकों की संख्या के रूप में परिभाषित किया जाता है जो किसी उत्पाद/सेवा का उपयोग करना जारी रखते हैं। कोहोर्ट प्रतिधारण विश्लेषण की गणना करना कठिन है। ग्राहक प्रतिधारण विश्लेषण के लिए SQL में अवधारण दर की गणना करने का तरीका यहां दिया गया है। आप इसका उपयोग MySQL, PostgreSQL, SQL Server और Oracle में अवधारण दर की गणना के लिए कर सकते हैं। हम ग्राहक प्रतिधारण के लिए SQL क्वेरी को भी देखेंगे। प्रतिधारण दर को नियमित अंतराल पर लौटने वाले उपयोगकर्ताओं की संख्या के रूप में मापा जाता है, जैसे कि हर सप्ताह या महीने, उनके साइनअप के सप्ताह के आधार पर समूहीकृत किया जाता है।

हम SQL में साप्ताहिक कोहोर्ट द्वारा प्रतिधारण की गणना करेंगे और नीचे दी गई तालिका जैसी तालिका के साथ समाप्त करेंगे, जो साइन अप करने के प्रत्येक सप्ताह के लिए कुछ सप्ताह पहले पहली बार साइन अप करने के बाद फिर से लॉग इन करने वाले ग्राहकों की संख्या दिखाती है।

SQL में अवधारण दर की गणना कैसे करें?

यहाँ SQL में अवधारण दर की गणना करने के चरण दिए गए हैं। मान लें कि आपके पास निम्न तालिका है जो प्रत्येक उपयोगकर्ता की विज़िट के user_id और login_date को संग्रहीत करती है।

mysql> create table login(login_date date,user_id int, id int not null auto_increment, primary key (id));

mysql> insert into login(login_date,user_id)
     values('2020-01-01',10),('2020-01-02',12),('2020-01-03',15),
     ('2020-01-04',11),('2020-01-05',13),('2020-01-06',9),
     ('2020-01-07',21),('2020-01-08',10),('2020-01-09',10),
     ('2020-01-10',2),('2020-01-11',16),('2020-01-12',12),
     ('2020-01-13',10),('2020-01-14',18),('2020-01-15',15),
     ('2020-01-16',12),('2020-01-17',10),('2020-01-18',18),
     ('2020-01-19',14),('2020-01-20',16),('2020-01-21',12),
     ('2020-01-22',21),('2020-01-23',13),('2020-01-24',15),
     ('2020-01-25',20),('2020-01-26',14),('2020-01-27',16),
     ('2020-01-28',15),('2020-01-29',10),('2020-01-30',18);


mysql> select * from login;
+------------+---------+----+
| login_date | user_id | id |
+------------+---------+----+
| 2020-01-01 |      10 |  1 |
| 2020-01-02 |      12 |  2 |
| 2020-01-03 |      15 |  3 |
| 2020-01-04 |      11 |  4 |
| 2020-01-05 |      13 |  5 |
| 2020-01-06 |       9 |  6 |
| 2020-01-07 |      21 |  7 |
| 2020-01-08 |      10 |  8 |
| 2020-01-09 |      10 |  9 |
| 2020-01-10 |       2 | 10 |
| 2020-01-11 |      16 | 11 |
| 2020-01-12 |      12 | 12 |
| 2020-01-13 |      10 | 13 |
| 2020-01-14 |      18 | 14 |
| 2020-01-15 |      15 | 15 |
| 2020-01-16 |      12 | 16 |
| 2020-01-17 |      10 | 17 |
| 2020-01-18 |      18 | 18 |
| 2020-01-19 |      14 | 19 |
| 2020-01-20 |      16 | 20 |
| 2020-01-21 |      12 | 21 |
| 2020-01-22 |      21 | 22 |
| 2020-01-23 |      13 | 23 |
| 2020-01-24 |      15 | 24 |
| 2020-01-25 |      20 | 25 |
| 2020-01-26 |      14 | 26 |
| 2020-01-27 |      16 | 27 |
| 2020-01-28 |      15 | 28 |
| 2020-01-29 |      10 | 29 |
| 2020-01-30 |      18 | 30 |
+------------+---------+----+

हम साप्ताहिक कोहोर्ट विश्लेषण तैयार करेंगे। अपने उत्पाद/सेवा के आधार पर आप इसे मासिक/दैनिक में बदल सकते हैं।

हम SQL में अवधारण दर की गणना करने के लिए MySQL का उपयोग करेंगे। आप PostgreSQL के लिए मंथन दर की गणना भी कर सकते हैं।

<एच2>1. सप्ताह के अनुसार बकेट विज़िट

SQL में अवधारण दर की गणना करने के लिए, सबसे पहले, हम प्रत्येक विज़िट को उसके लॉगिन के सप्ताह के अनुसार समूहित करेंगे।

mysql> SELECT
                user_id,
                week(login_date) AS login_week
                FROM login
                GROUP BY user_id,week(login_date);
+---------+------------+
| user_id | login_week |
+---------+------------+
|       2 |          1 |
|       9 |          1 |
|      10 |          0 |
|      10 |          1 |
|      10 |          2 |
|      10 |          4 |
|      11 |          0 |
|      12 |          0 |
|      12 |          2 |
|      12 |          3 |
|      13 |          1 |
|      13 |          3 |
|      14 |          3 |
|      14 |          4 |
|      15 |          0 |
|      15 |          2 |
|      15 |          3 |
|      15 |          4 |
|      16 |          1 |
|      16 |          3 |
|      16 |          4 |
|      18 |          2 |
|      18 |          4 |
|      20 |          3 |
|      21 |          1 |
|      21 |          3 |
+---------+------------+

यह भी देखें कि MySQL में साप्ताहिक सक्रिय उपयोगकर्ताओं (WAU) की गणना कैसे करें।

2. प्रत्येक उपयोगकर्ता के लिए लॉगिन के पहले सप्ताह की गणना करें

अगला, SQL में अवधारण दर की गणना करने के लिए, हमें प्रत्येक उपयोगकर्ता के लिए लॉगिन के पहले सप्ताह की गणना करने की आवश्यकता है। हम प्रत्येक उपयोगकर्ता के लिए पहले लॉगिन सप्ताह की गणना करने के लिए केवल MIN फ़ंक्शन और GROUP BY का उपयोग करेंगे

mysql> SELECT
                user_id,
                min(week(login_date)) AS first_week
                FROM login
                GROUP BY user_id;
+---------+------------+
| user_id | first_week |
+---------+------------+
|       2 |          1 |
|       9 |          1 |
|      10 |          0 |
|      11 |          0 |
|      12 |          0 |
|      13 |          1 |
|      14 |          3 |
|      15 |          0 |
|      16 |          1 |
|      18 |          2 |
|      20 |          3 |
|      21 |          1 |
+---------+------------+

3. login_week और first_week के लिए 2 टेबल मर्ज करें

इसके बाद, SQL में अवधारण दर की गणना करने के लिए, हम नीचे दी गई क्वेरी का उपयोग करने वाले प्रत्येक उपयोगकर्ता के लिए एक INNER JOIN के साथ login_week और first_week साथ-साथ प्राप्त करते हैं।

mysql> select a.user_id,a.login_week,b.first_week as first_week  from   
              (SELECT
                user_id,
                week(login_date) AS login_week
                FROM login
                GROUP BY user_id,week(login_date)) a,
              (SELECT
                user_id,
                min(week(login_date)) AS first_week
                FROM login
                GROUP BY user_id) b
        where a.user_id=b.user_id;
+---------+------------+------------+
| user_id | login_week | first_week |
+---------+------------+------------+
|       2 |          1 |          1 |
|       9 |          1 |          1 |
|      10 |          0 |          0 |
|      10 |          1 |          0 |
|      10 |          2 |          0 |
|      10 |          4 |          0 |
|      11 |          0 |          0 |
|      12 |          0 |          0 |
|      12 |          2 |          0 |
|      12 |          3 |          0 |
|      13 |          1 |          1 |
|      13 |          3 |          1 |
|      14 |          3 |          3 |
|      14 |          4 |          3 |
|      15 |          0 |          0 |
|      15 |          2 |          0 |
|      15 |          3 |          0 |
|      15 |          4 |          0 |
|      16 |          1 |          1 |
|      16 |          3 |          1 |
|      16 |          4 |          1 |
|      18 |          2 |          2 |
|      18 |          4 |          2 |
|      20 |          3 |          3 |
|      21 |          1 |          1 |
|      21 |          3 |          1 |
+---------+------------+------------+

4. सप्ताह संख्या की गणना करें

यहाँ से, SQL में अवधारण दर की गणना करना आसान है। इसके बाद, हम सप्ताह_संख्या (सप्ताह की संख्या) की गणना करने के लिए login_week और first_week के बीच के अंतर की गणना करते हैं

mysql> select a.user_id,a.login_week,b.first_week as first_week,
              a.login_week-first_week as week_number from   
             (SELECT
                user_id,
                week(login_date) AS login_week
                FROM login
                GROUP BY user_id,week(login_date)) a,
             (SELECT
                user_id,
                min(week(login_date)) AS first_week
                FROM login
                GROUP BY user_id) b
        where a.user_id=b.user_id;
+---------+------------+------------+-------------+
| user_id | login_week | first_week | week_number |
+---------+------------+------------+-------------+
|       2 |          1 |          1 |           0 |
|       9 |          1 |          1 |           0 |
|      10 |          0 |          0 |           0 |
|      10 |          1 |          0 |           1 |
|      10 |          2 |          0 |           2 |
|      10 |          4 |          0 |           4 |
|      11 |          0 |          0 |           0 |
|      12 |          0 |          0 |           0 |
|      12 |          2 |          0 |           2 |
|      12 |          3 |          0 |           3 |
|      13 |          1 |          1 |           0 |
|      13 |          3 |          1 |           2 |
|      14 |          3 |          3 |           0 |
|      14 |          4 |          3 |           1 |
|      15 |          0 |          0 |           0 |
|      15 |          2 |          0 |           2 |
|      15 |          3 |          0 |           3 |
|      15 |          4 |          0 |           4 |
|      16 |          1 |          1 |           0 |
|      16 |          3 |          1 |           2 |
|      16 |          4 |          1 |           3 |
|      18 |          2 |          2 |           0 |
|      18 |          4 |          2 |           2 |
|      20 |          3 |          3 |           0 |
|      21 |          1 |          1 |           0 |
|      21 |          3 |          1 |           2 |
+---------+------------+------------+-------------+

5. परिणाम पिवट करें

अंत में, हमें परिणाम को पिवट करने की आवश्यकता है, SQL में अवधारण दर की गणना करने के लिए, और कोहोर्ट तालिका उत्पन्न करने के लिए। हमारी पिवट तालिका में, हमारे पास प्रत्येक पहले_सप्ताह . के लिए एक पंक्ति होगी मान, और प्रत्येक सप्ताह_संख्या . के लिए एक कॉलम जिसमें आपके उत्पाद/सेवा का उपयोग करने के लिए 'n' सप्ताह के बाद वापस आने वाले उपयोगकर्ताओं की संख्या शामिल है। इसके लिए हम निम्नलिखित क्वेरी का उपयोग करते हैं।

mysql> select first_week,
     SUM(CASE WHEN week_number = 0 THEN 1 ELSE 0 END) AS week_0,
       SUM(CASE WHEN week_number = 1 THEN 1 ELSE 0 END) AS week_1,
       SUM(CASE WHEN week_number = 2 THEN 1 ELSE 0 END) AS week_2,
       SUM(CASE WHEN week_number = 3 THEN 1 ELSE 0 END) AS week_3,
       SUM(CASE WHEN week_number = 4 THEN 1 ELSE 0 END) AS week_4,
       SUM(CASE WHEN week_number = 5 THEN 1 ELSE 0 END) AS week_5,
       SUM(CASE WHEN week_number = 6 THEN 1 ELSE 0 END) AS week_6,
       SUM(CASE WHEN week_number = 7 THEN 1 ELSE 0 END) AS week_7,
       SUM(CASE WHEN week_number = 8 THEN 1 ELSE 0 END) AS week_8,
       SUM(CASE WHEN week_number = 9 THEN 1 ELSE 0 END) AS week_9
    
       from  (
    
       select a.user_id,a.login_week,b.first_week as first_week,a.login_week-first_week as week_number  from   (SELECT
                user_id,
                week(login_date) AS login_week
                FROM login
                GROUP BY user_id,week(login_date)) a,(SELECT
                user_id,
                min(week(login_date)) AS first_week
                FROM login
                GROUP BY user_id) b
        where a.user_id=b.user_id
    
        ) as with_week_number
    
         group by first_week
     order by first_week;
+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
| first_week | week_0 | week_1 | week_2 | week_3 | week_4 | week_5 | week_6 | week_7 | week_8 | week_9 |
+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
|          0 |      4 |      1 |      3 |      2 |      2 |      0 |      0 |      0 |      0 |      0 |
|          1 |      5 |      0 |      3 |      1 |      0 |      0 |      0 |      0 |      0 |      0 |
|          2 |      1 |      0 |      1 |      0 |      0 |      0 |      0 |      0 |      0 |      0 |
|          3 |      2 |      1 |      0 |      0 |      0 |      0 |      0 |      0 |      0 |      0 |
+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+

अब हम जानते हैं कि SQL में अवधारण दर की गणना कैसे करें। आप उपरोक्त प्रश्नों को MySQL, PostgreSQL में अवधारण दर की गणना करने के लिए भी कर सकते हैं।

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

वैसे, यदि आप 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. SQL डेटाबेस व्यवस्थापक साक्षात्कार युक्तियाँ

  3. SQL में LIKE का उपयोग कैसे करें

  4. एसक्यूएल में ट्रिगर क्या हैं और उन्हें कैसे कार्यान्वित करें?

  5. वास्तविक वर्कफ़्लो को परिभाषित करने के लिए कॉन्फ़िगरेशन तालिकाओं का उपयोग करना