none
Apresentar os dois valores mais altos para cada coluna RRS feed

  • Pergunta

  • Se eu tiver uma tabela deste tipo (nome, custo da viagem e tipo de serviço) , como é que posso ir buscars os dois valor mais altos de viagem para cada tipo de servico ?
    quinta-feira, 10 de outubro de 2019 14:55

Todas as Respostas

  • Boa tarde,

    Experimente mais ou menos dessa forma:

    with CTE_RN as
    (
        select
            Nome,
            CustoViagem,
            TipoServico,
            row_number() over(partition by Nome, TipoServico order by CustoViagem desc) as RN
        from MinhaTabela
    )
    
    select * from CTE_RN where RN <= 2

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 10 de outubro de 2019 15:21
  • Olá, desde já obrigado pela resposta
    Neste caso a tabela que eu tenho já é utilizando um with...Posso tutilizar na mesma ?
    sexta-feira, 11 de outubro de 2019 13:04
  • eu usei, mas nao percebi muito bem o conceito de rownumber, quando aplico todos os valores de rn são 1 ..
    sexta-feira, 11 de outubro de 2019 13:12
  • Se eu tiver uma tabela deste tipo (nome, custo da viagem e tipo de serviço) , como é que posso ir buscars os dois valor mais altos de viagem para cada tipo de servico ?

    Experimente:

    -- código #1 v2
    with Serviço as (
    código da cte já existente
    )
    SELECT tipoServiço, custoViagem from (SELECT *,
           seq= row_number() over (partition by tipoServiço order by custoViagem desc)
      from Serviço) as S where seq <= 2
    order by tipoServiço, custoViagem desc;


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José Diz sábado, 12 de outubro de 2019 19:15
    • Sugerido como Resposta José Diz sábado, 12 de outubro de 2019 19:15
    sexta-feira, 11 de outubro de 2019 13:38