Somatório em SQL - Postgres

30/06/2019

0

Boa tarde...

Estou querendo criar uma regra de banco para executar um cálculo que me retorne a quantidade de despesas de uma unidade.
Este cálculo depende de somatório de campos e tabelas distintas.

Para isso até agora tenho o seguinte código.

</SQL>
SELECT cod_pessoa,
(SELECT (vlr_serv_bas_rd/20)
FROM controles_agua
WHERE EXTRACT('Month' FROM data_faturamento) = EXTRACT('Month' FROM now())
AND EXTRACT('Year' FROM data_faturamento) = EXTRACT('Year' FROM now()))
+
(SELECT vlr_consumo_rd * SUM(area_total) / (SELECT SUM(area_total) FROM unidades WHERE id_unidade NOT IN (1,2,13))
FROM controles_agua
WHERE EXTRACT('Month' FROM data_faturamento) = EXTRACT('Month' FROM now())
AND EXTRACT('Year' FROM data_faturamento) = EXTRACT('Year' FROM now()))
+
(SELECT SUM(valor_reais) * SUM(area_total) / (SELECT SUM(area_total) FROM unidades WHERE id_unidade NOT IN (1,2,13))
FROM despesas
WHERE EXTRACT('Month' FROM data_fatura) = EXTRACT('Month' FROM now())
AND EXTRACT('Year' FROM data_fatura) = EXTRACT('Year' FROM now())
AND is_rateio = 1)
+
(SELECT vlr_fatura * SUM(area_total) / (SELECT SUM(area_total) FROM unidades WHERE id_unidade NOT IN (1,2,13))
FROM controles_energia
WHERE EXTRACT('Month' FROM data_faturamento) = EXTRACT('Month' FROM now())
AND EXTRACT('Year' FROM data_faturamento) = EXTRACT('Year' FROM now()))
+
(SELECT SUM(valor_reais) * 0.1 * SUM(area_total) / (SELECT SUM(area_total) FROM unidades)
FROM despesas
WHERE EXTRACT('Month' FROM data_fatura) = EXTRACT('Month' FROM now())
AND EXTRACT('Year' FROM data_fatura) = EXTRACT('Year' FROM now())
AND is_rateio IN (1,2,3,4))
+
(SELECT (112 + SUM(valor_reais)) * SUM(area_total) / (SELECT SUM(area_total) FROM unidades)
FROM despesas
WHERE EXTRACT('Month' FROM data_fatura) = EXTRACT('Month' FROM now())
AND EXTRACT('Year' FROM data_fatura) = EXTRACT('Year' FROM now())
AND is_rateio = 3)
,
(SELECT (112 + SUM(valor_reais)) * SUM(area_total) / (SELECT SUM(area_total) FROM unidades)
FROM despesas
WHERE EXTRACT('Month' FROM data_fatura) = EXTRACT('Month' FROM now())
AND EXTRACT('Year' FROM data_fatura) = EXTRACT('Year' FROM now())
AND is_rateio = 3 AND cod_pessoa = 15) * SUM(area_total) / (SELECT SUM(area_total) FROM unidades WHERE id_unidade NOT IN (1,2,13))
FROM unidades
WHERE id_unidade NOT IN (1,2,13)
GROUP BY cod_pessoa
ORDER BY cod_pessoa

</SQL>

... Até soma direitinho, mas o problema é que para cada campo da tabela eu necessito somar também o resultado do último campo(separado pela vírgula).

Como posso fazer isto?? Se tiverem alguma outra solução para o SQL acima também é bem vinda.
Grato.
Sérgio Saibel

Sérgio Saibel

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar