добавив промежуточный итог, используя свертку, и присвойте «1» с максимальным суммарным значением для группы, аналогично присвойте «2» для 2-го максимального суммарного значения для группы. - PullRequest
0 голосов
/ 22 апреля 2019

добавление промежуточного итога с использованием «свертки» и присваивание «1» с максимальным суммарным значением для группы, аналогично, присваивание «2» для 2-го максимального суммарного значения для группы

Предположим, у вкладчика будет несколько типов счетов (накопительных, текущих, срочных) с соответствующей суммой суммы. скажем, у нас есть "общее количество депозита" = 5000, % от общего количества депозитов = (сумма / общее количество депозитов)

`Name of the Depositor`  `Types of Deposits` `Amount`  `% of total depostits`

       A                saving               10          0.002
                        current              20          0.004 
                        Term                 30          0.006
                        Total                60          0.012

       B                Saving               50          0.01
                        term                 60          0.012
                        Total                110         0.022

Мне нужны 20 лучших вкладчиков в соответствии с максимальным «общим» значением «% от общего количества депозитов».

WITH cte AS (
select c.cust_id ,
c.cust_name AS C2,
CASE WHEN B.SCHM_TYPE ='SBA' THEN 'Savings' WHEN B.SCHM_TYPE ='CAA' THEN 'Current' WHEN B.SCHM_TYPE ='TDA' THEN 'Term' ELSE 'Total' END AS C3,
Round(SUM(eod_bal_amt),2) AS C4,
((SUM(eod_bal_amt))*100/(select Nvl(SUM(eod_bal_amt),0) AS C7 
from a,b where A.acid=B.ACID
AND B.SCHM_TYPE IN('SBA','TDA','CAA','SDA')
AND 20190331 BETWEEN B.FROM_DATE_SK AND B.TO_DATE_SK 
AND 20190331 BETWEEN A.FROM_DATE_SK AND A.TO_DATE_SK)) AS C5,
Dense_Rank () OVER (order BY c.cust_id) dn

from b JOIN fct_eod_bal_etl_temp a ON a.ACid=B.ACID
JOIN c ON c.CUST_ID=B.CUST_ID
AND B.SCHM_TYPE IN('SBA','TDA','CAA')
AND 20190331 BETWEEN B.FROM_DATE_SK AND B.TO_DATE_SK
AND 20190331 BETWEEN A.FROM_DATE_SK AND A.TO_DATE_SK
AND 20190331 BETWEEN C.FROM_DATE_SK AND C.TO_DATE_SK
GROUP BY c.cust_name,B.SCHM_TYPE,c.cust_id
)
SELECT cust_id,c2,nvl(C3,'Total') AS C3,Sum(C4) AS C4,Sum(c5) as C5,dn
FROM cte
group by cust_id,c2,rollup (c3),dn

op должен быть у любого вкладчика, чья максимальная сумма составляет «% от общего количества депозитов» будет присвоено значение «1» для всей группы клиентов.

Name ofDepositor Types of Deposits Amount %total_depostits new

  A                 saving               10          0.002        2
                    current              20          0.004        2 
                    Term                 30          0.006        2
                    Total                60          0.012        2

   B                Saving               50          0.01         1
                    term                 60          0.012        1
                    Total                110         0.022        1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...