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

रोलिंग दैनिक विशिष्ट गणना

सबसे पहले आपको उन दिनों की सूची तैयार करनी होगी जिनमें आप रुचिकर हैं:

select (trunc(sysdate, 'yyyy') -1) + level as ts_day
from dual
connect by level <= to_number( to_char(sysdate, 'DDD' ) )

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

with days as
 ( select (trunc(sysdate, 'yyyy') -1) + level as ts_day
   from dual
   connect by level <= to_number( to_char(sysdate, 'DDD' ) ) )
select days.ts_day
       , sum ( case when trunc(connect_ts) = ts_day then 1 else 0 end ) as daily_users
       , sum ( case when trunc(connect_ts) between ts_day - 45 and ts_day then 1 else 0 end ) as active_users
from days
     cross join sessions  
where connect_ts between trunc(sysdate, 'yyyy') - 45 and sysdate
group by ts_day
order by ts_day
/


  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. Oracle में एक इंडेक्स का उपयोग करके एक स्ट्रिंग को उलटना

  3. Oracle JDBC रेडीस्टेटमेंट ऑब्जेक्ट से बाइंड पैरामीटर के मान कैसे प्राप्त करें

  4. मेरी निर्यात फ़ाइल में Oracle, ब्लॉब डेटा अनुपलब्ध हैं

  5. R में पासवर्ड एन्क्रिप्ट करें - RODBC का उपयोग करके Oracle DB से कनेक्ट करने के लिए