Транспонирование и суммирование 5 лучших результатов в Teradata SQL Assistant

У меня есть запрос, который я преобразовал из Access и в настоящее время правильно работает в Teradata SQL Assistant. Полученные данные представляют собой стандартную таблицу со всеми необходимыми мне данными.

Что мне интересно: можно ли добавить к этому запросу что-то, что по существу суммирует все значения экспозиции, а затем покажет только 5 лучших делений по самой большой сумме (из этих 5 лучших). Кроме того, данные переставлены так, чтобы мои темы располагались в крайнем левом столбце.

Вот рабочий код, подробности опущены.

SELECT 
A.AS_OF_DT
, B.DIVISION
, B.CLASS
, Sum(A.BALANCE/1000000) AS "Bal in MMs"
, Sum(A.EXPOSURE/1000000) AS "Exp in MMs"
, Sum(CASE WHEN A.STATUS = 'NACC' THEN  (B.BALANCE/1000000) ELSE 0 END) AS "NPL Bal as MMs" 

FROM DB.TABLE1 A LEFT JOIN DB.TABLE2 B ON A.NAICS = B.NAICS_CD

WHERE A.AS_OF_DT= '2017-03-31'

GROUP BY 
    A.AS_OF_DT, 
    B.DIVISION, 
    B.CLASS 

ORDER BY SUM (A.EXPOSURE/1000000) DESC

По сути, я хочу, чтобы столбцы были следующими:

ПОДРАЗДЕЛЕНИЕ | ДАТА |

Ниже DIVISION будут только 5 лучших DIVISIONS, суммированные по EXPOSURE (под DATE).

Я могу попытаться уточнить, если нужно. Просто дай мне знать.

Спасибо!

Конечным результатом является получение пасты данных, которую я могу бросить в Excel без ручной работы по переносу данных в Excel вместе с написанием формул, чтобы рыться в тысячах результатов базового запроса, чтобы найти сводку по отдельным подразделениям, а затем выбрать 5 лучших каждого месяц.

Спасибо!

Shill


person Shilling    schedule 22.05.2017    source источник


Ответы (2)


Чтобы получить 5 лучших для каждого подразделения, вы можете использовать ПОДТВЕРДИТЬ.

Добавьте это в конец вашего запроса:

QUALIFY ROW_NUMBER() over (PARTITION BY AS_OF_DATE,DIVISION order by (SUM (A.EXPOSURE/1000000))

Что касается других ваших вопросов, SQL Assistant - не лучший инструмент для презентаций, он не будет делать то, о чем вы просите.

person Andrew    schedule 22.05.2017
comment
Я попробую, спасибо. К сожалению, это то, что я использую. - person Shilling; 23.05.2017

Если ваш запрос уже работает,

попробуйте заменить:

SELECT 

By:

SELECT top 10

(линия 1)

person Axel Paccalin    schedule 22.05.2017
comment
Разве это не возвращает только первые 10 строк, которые обычно появляются? - person Shilling; 22.05.2017
comment
о да, извини, я не совсем понял, о чем ты просишь - person Axel Paccalin; 22.05.2017
comment
По сути, я пытаюсь суммировать экспозицию по всем разделам, поэтому, когда у меня есть повторяющиеся подразделения, эта экспозиция просто суммируется, чтобы по сути превратить, скажем, 1000 строк в 50 (50 отдельных разделов). Затем я хочу вывести 5 лучших на основе экспозиции (наибольшее воздействие на наименьшее, но только 5 лучших). Любой способ сделать это? - person Shilling; 23.05.2017