Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Không nhận được phép nhân chuỗi đầy đủ (sản phẩm) trong truy vấn CONNECT-BY

Những gì bạn cần là phép nhân tích lũy. Nhưng không có chức năng nào như chức năng Tổng hợp hay chức năng Phân tích. Nhưng phép toán cho chúng ta biết phép nhân có thể được thay đổi thành phép cộng bằng cách sử dụng logarit .

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

Sử dụng hàm này trong SUM làm hàm phân tích. Không cần sử dụng cấu trúc CONNECT BY.

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

Kết quả :

|   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. Tại sao tôi nhận được Ngoại lệ OutOfRange trong Hàm GetOrdinal của trường CLOB này?

  2. CHỌN gần đây nhất trong Oracle SQL Query

  3. Hành vi kỳ lạ của tham gia bên ngoài đầy đủ trong Oracle - làm thế nào nó có thể được giải thích?

  4. Điều gì xảy ra với các trình kích hoạt phụ thuộc khi bảng bị loại bỏ?

  5. Oracle SQL:Hiểu hoạt động của SYS_GUID () khi hiển thị trong dạng xem nội tuyến?