Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

322
Views
Sum two specific rows with different P-key values. PostgreSQL

So, i have a query that returns the following table:

charvar | numeric | numeric           |   numeric  | text
 cargo  |   qtd   | valor_ust_servico |  total_ust | valor_servco

 name1  |   30    |   0.50  |  236.50 | US$ 20,132.02
 name2  |   96    |   0.50  |  236.50 | US$ 43,169.32
 name3  |   120   |   0.50  |  236.50 | US$ 12,791.11
 name4  |  7708   |   0.50  |  236.50 | US$ 142,041.64
 name5  |   469   |   0.50  |  236.50 | US$ 5,984.18

I need to add up name1 and name3 at the final table.

my code is as follows

    with consulta as
(  
  SELECT
          cc.nomecategoriaservico,
          max(s.nomeservico) as nomeservico,
          min(vsc.valorServico) as valor_UST_Serviço,
          sum(vsc.valorservico) as total_UST,
          sum(vsc.valorServico*c.cotacaomoeda) as Valor_Serviço,
          count(s.nomeservico) as qtd,
          EXTRACT(MONTH FROM SS.DATAHORAFIM) AS MESSERVICO
        FROM solicitacaoservico ss
        INNER JOIN SERVICOCONTRATO SC ON SC.IDSERVICOCONTRATO = SS.IDSERVICOCONTRATO
        INNER JOIN VALORSERVICOCONTRATO VSC ON VSC.IDSERVICOCONTRATO = SC.IDSERVICOCONTRATO
        INNER JOIN CONTRATOS C ON C.IDCONTRATO = SC.IDCONTRATO
        INNER JOIN SERVICO S ON S.IDSERVICO = SC.IDSERVICO
        left JOIN CATEGORIASERVICO CC ON S.IDCATEGORIASERVICO = CC.IDCATEGORIASERVICO
        WHERE ss.datahorafim BETWEEN '2017-03-01 00:00:00' AND '2017-03-31 23:59:59.999'
        AND UPPER(SS.SITUACAO) = UPPER('FECHADA')
        GROUP BY CC.NOMECATEGORIASERVICO, EXTRACT(MONTH FROM SS.DATAHORAFIM)
), consolidado as
 (
     select
     0 as linha,
     nomecategoriaservico AS CARGO,
     qtd,
     valor_UST_Serviço,
     total_UST AS total_UST,
     'R$' || to_char(Valor_Serviço,'9G999G999D99') as Valor_Serviço
  FROM consulta
  UNION ALL
  SELECT
    1 as linha,
    'Total UST' as CARGO,
    sum(qtd) as qtde,
    round(sum(qtd*valor_UST_Serviço)/sum(qtd),2) valor_UST_Serviço,
    sum(total_UST) as total,
    'R$' || to_char(sum(Valor_Serviço),'9G999G999D99') as Valor_Serviço
  FROM consulta
), fim AS (
select
  CARGO,
  qtd,
  valor_UST_Serviço,
  total_UST,
  REPLACE(REPLACE(REPLACE(Valor_Serviço,'  ',' '),'  ',' '),'  ',' ') AS Valor_Serviço
from consolidado
order by linha,CARGO

Everything I have tried so far comes close but not quite the right thing. I also get many casting erros because of the different formats.

edit1. A but of formatting

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

CTE alias consulta :

  SELECT
          case when cc.nomecategoriaservico = 'name1' or name_col = 'name3' then 'name1or3' else cc.nomecategoriaservico end nomecategoriaservico,
          max(s.nomeservico) as nomeservico,
          min(vsc.valorServico) as valor_UST_Serviço,
          sum(vsc.valorservico) as total_UST,
          sum(vsc.valorServico*c.cotacaomoeda) as Valor_Serviço,
          count(s.nomeservico) as qtd,
          EXTRACT(MONTH FROM SS.DATAHORAFIM) AS MESSERVICO
        FROM solicitacaoservico ss
        INNER JOIN SERVICOCONTRATO SC ON SC.IDSERVICOCONTRATO = SS.IDSERVICOCONTRATO
        INNER JOIN VALORSERVICOCONTRATO VSC ON VSC.IDSERVICOCONTRATO = SC.IDSERVICOCONTRATO
        INNER JOIN CONTRATOS C ON C.IDCONTRATO = SC.IDCONTRATO
        INNER JOIN SERVICO S ON S.IDSERVICO = SC.IDSERVICO
        left JOIN CATEGORIASERVICO CC ON S.IDCATEGORIASERVICO = CC.IDCATEGORIASERVICO
        WHERE ss.datahorafim BETWEEN '2017-03-01 00:00:00' AND '2017-03-31 23:59:59.999'
        AND UPPER(SS.SITUACAO) = UPPER('FECHADA')
        GROUP BY case when cc.nomecategoriaservico = 'name1' or name_col = 'name3' then 'name1or3' else cc.nomecategoriaservico end, EXTRACT(MONTH FROM SS.DATAHORAFIM)
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!