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

कनेक्ट-बाय क्वेरी में पूर्ण श्रृंखला गुणन (उत्पाद) नहीं मिल रहा है

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

a * b =  exp(ln(a) + ln(b))

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

SQL Fiddle

recurreten as
(
select  YR, YSet, 
      rtnpct rtn_year, 
      round(exp(sum(ln(rtnpct)) over (order by yr, yset rows between unbounded preceding and current row)),2) ccr,
      exp(sum(ln(rtnpct)) over (order by yr, yset rows between unbounded preceding and current row)) ccrfull
from Z_RETENTIONPCT
)
select * from recurreten
order by yr, yset

परिणाम :

|   YR | YSET | RTN_YEAR |  CCR |        CCRFULL |
|------|------|----------|------|----------------|
| 1998 |   20 |  0.84766 | 0.85 |        0.84766 |
| 1999 |   21 |  0.77941 | 0.66 |   0.6606746806 |
| 2000 |   22 |  0.78659 | 0.52 | 0.519680097013 |
| 2001 |   23 |  0.76879 |  0.4 | 0.399524861783 |
| 2002 |   24 |  0.80952 | 0.32 |  0.32342336611 |
| 2003 |   25 |  0.76316 | 0.25 | 0.246823776081 |
| 2004 |   26 |  0.82425 |  0.2 | 0.203444497435 |
| 2005 |   27 |   0.6992 | 0.14 | 0.142248392606 |
| 2006 |   28 |  0.77071 | 0.11 | 0.109632258666 |
| 2007 |   29 |    0.702 | 0.08 | 0.076961845583 |



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - रेफरी कर्सर से एक विशिष्ट कॉलम का चयन करें

  2. SIN () Oracle में फंक्शन

  3. जाँच करें कि क्या तालिका डेटाबेस में मौजूद है - PL SQL

  4. Oracle में सम्मिलित करना और उत्पन्न अनुक्रम ID को पुनः प्राप्त करना

  5. Oracle कई स्तंभों को एक में मिलाता है