GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Home Fóruns SQL e PL/SQL Pesquisa

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #151594
    Eliza
    Participante

    Bom dia pessoal,

    tenho uma tabela de % de comissão, com os campos:

    data                    % de comissão

    20/12/2021          3

    28/12/2020          5

    05/01/2021          7

    06/01/2021         4

    Tenho a tabela VENDAS, que tem as vendas realizadas.

    Campos:   data da venda, cod. vendedor, cliente, valor venda

     

    Consultar:

    através da tabela VENDAS,  buscar o % de comissão a ser pago.

    Exemplos:

    1-  uma venda do dia 05/01/2021,  a comissão será 7%.  Existe comissão lançada nesta data.

    2- uma venda do dia 04/01/2021,  a comissão será 5%.    É preciso buscar a data anterior mais próxima à data da venda, logo será 28/12/2020.

    Qual seria solução mais otimizada para fazer esse SELECT   vendas x comissão?

     

     

     

    #151624
    Motta
    Participante

    Eliza ,

    Um modelo ruim na minha opinião , o melhor seria ter um par
    inicio e fim de vigência
    um simples between resolveria.

    daria para garantir a integridade por trigger mas está fora do escopo.

    mas …

    --maior data encontrada
    
    select max(c1.data_comissao)
    from comissoes c1
    where (c1.data_comissao) <= <data_parametro>)
    
    --dados desta data
    select c2.comissao
    from comissoes c2
    where c2.data_comissao = (select max(c1.data_comissao)
    from comissoes c1
    where (c1.data_comissao) <= <data_parametro>))

    Isto poderia estar em uma FUNCTION que receberia a data
    e retornaria a comissao

     

    Mas …
    1) Eu mudaria o modelo
    2) Não usaria um campo de nome “data” pois é palavra reservada

    #151670
    Eliza
    Participante

    bom dia Motta,

    Obrigada pelo retorno e pelas dicas.

    Pensei nesse select tb, acho que é o mais viável.

    Não vamos colocar data inicial e final porque o pessoal quer seguir o padrão do sistema , que está funcionando. Todas as validades só tem uma data, que é a inicial.

    Achei legal a ideia da FUNCTION.

    Campo “Data”, foi só pra exemplificar.

     

    Valeu muito pelas dicas.

    Até mais.

     

    #151777
    Motta
    Participante

    Ok

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Você deve fazer login para responder a este tópico.