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

समय के साथ डीएयू/एमएयू से पूछताछ (दैनिक)

मान लें कि आपके पास प्रत्येक दिन के लिए मान हैं, तो आप एक सबक्वेरी और range between का उपयोग करके कुल गणना प्राप्त कर सकते हैं :

with dau as (
      select date, count(userid) as dau
      from dailysessions ds
      group by date
     )
select date, dau,
       sum(dau) over (order by date rows between -29 preceding and current row) as mau
from dau;

दुर्भाग्य से, मुझे लगता है कि आप केवल उपयोगकर्ता गणना के बजाय अलग-अलग उपयोगकर्ता चाहते हैं। यह समस्या को और अधिक कठिन बना देता है, खासकर क्योंकि पोस्टग्रेज count(distinct) का समर्थन नहीं करता है विंडो फ़ंक्शन के रूप में।

मुझे लगता है कि इसके लिए आपको किसी तरह का सेल्फ जॉइन करना होगा। यहाँ एक विधि है:

with dau as (
      select date, count(distinct userid) as dau
      from dailysessions ds
      group by date
     )
select date, dau,
       (select count(distinct user_id)
        from dailysessions ds
        where ds.date between date - 29 * interval '1 day' and date
       ) as mau
from dau;


  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. PostgreSQL - समूह भूमिकाएँ जोड़ने के बाद पासवर्ड प्रमाणीकरण विफल

  3. नया ट्रिगर बनाने का प्रयास करते समय SQL त्रुटि

  4. कैसे अद्वितीय संयुक्त प्राथमिक कुंजी के साथ एक Postgres तालिका बनाने के लिए?

  5. Docker पर PostgreSQL इंस्टॉलेशन