Как я могу сделать так, чтобы мои строки промежуточного итога находились в процентном формате, где 100,00000 будет равно 100% и т. Д. - PullRequest
0 голосов
/ 01 мая 2019
select gla.account_number, gla.account_description,   
line_item_description as expense, ili.line_item_amount as cost, 

Итак, под строкой, где у меня возникли проблемы, как мне сделать так, чтобы когда я делил line_item_amount на сумму line_item_amount / 100, он выводил в процентном формате.

sum(line_item_amount) over (order by line_item_amount desc) as RunningTotal,
line_item_amount / sum(line_item_amount / 100) over (order by 
line_item_amount desc) as percent

from
invoice_line_items ili
join general_ledger_accounts gla
on ili.account_number = gla.account_number

where account_description not like 'freight' and account_description not 
like 'telephone'

order by cost desc  

Вот как это должно выглядеть: enter image description here

Так выглядит моя enter image description here

1 Ответ

0 голосов
/ 01 мая 2019

Попробуйте умножить на 100.0, а также, возможно, использовать ROUND:

SELECT
    SUM(line_item_amount) OVER (ORDER BY line_item_amount DESC) AS RunningTotal,
    ROUND(100.0 * line_item_amount /
        SUM(line_item_amount) OVER (ORDER BY line_item_amount DESC), 2) AS percent
FROM invoice_line_items ili
INNER JOIN general_ledger_accounts gla
    ON ili.account_number = gla.account_number
WHERE
    account_description <> 'freight' AND account_description <> 'telephone'
ORDER BY
   cost DESC;

Примечания:

Я заменил ваши LIKE выражения в предложении WHERE на регулярные неравенства, потому что вы не использовали % подстановочные знаки. Вышеприведенная версия соответствует той же логике, что и вы, хотя, возможно, вы намеревались использовать что-то вроде WHERE account_description NOT LIKE '%freight%'. Если это так, то отредактируйте мой код, как хотите.

...