Получить сумму столбца из двух таблиц и использовать для расчета процентов от общего - PullRequest
0 голосов
/ 13 апреля 2020

Этот вопрос очень похож на этот , но в моем случае я получаю столбцы из двух таблиц.

Мой оригинальный запрос:

SELECT price, qty, price*qty as total
FROM  tableprices AS t1, tableqty AS t2 
WHERE t1.codigo = t2.codigo

Тогда Я хотел бы получить еще один столбец с процентами от общего количества в таблице в каждой строке.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Использовать оконные функции:

SELECT 
    price, 
    qty, 
    price * qty as total,
    100.0 * price * qty / sum(price * qty) over() percent_total
FROM  tableprices AS t1
INNER JOIN tableqty AS t2 ON t1.codigo = t2.codigo

Обратите внимание, что здесь используется стандартный явный синтаксис объединения (с ключевым словом ON), а не неявные неявные объединения (с запятой в FROM). пункт): этот старый синтаксис утратил популярность десятилетиями go и не должен использоваться в новом коде.

1 голос
/ 13 апреля 2020

Используйте функции окна:

SELECT price, qty, price*qty as total,
       (price * qty) / sum(price * qty) over () as ratio
FROM tableprices p join
     tableqty q 
     ON q.codigo = p.codigo;

Обратите внимание, что я также исправил ваш синтаксис archai c JOIN. Никогда не используйте запятые в предложении FROM.

...