Pular para o conteúdo

Fóruns SQL e PL/SQL Como montar essa SQL? Como montar essa SQL?

#91763
Avatar photoLeonardo Litz
Participante

    Ola FACC,

    Sem considerar os indices que vc tem ai.
    Olhando por cima, da para dizer que os groups by contidos nas subselects das tuplas podem ser retirados, voce ja esta filtrando por loja, so ira retornar uma loja, nao tem o pq agrupar, isso ja aumentaria a performace.
    Outra coisa que pode lhe ajuda eh substituindo:

    AND TO_CHAR(DTVENDA, 'MM/YYYY') = '10/2009'

    POR

    AND DTVENDA BETWEEN TO_DATE('01/10/2009,'DD/MM/YYYY') AND LAST_DAY(TO_DATE('01/10/2009,'DD/MM/YYYY'))

    Outra coisa, na parte abaixo, voce esta separando contratos com menos de 9 digitos de com mais de 9 digitos, para depois somar… nao seria melhor nem separar????


    (((SELECT SUM(VLRCURSO)
    FROM CYBELAR_CRESCABR
    WHERE FATURADO = 'S'
    AND TO_CHAR(DTVENDA, 'MM/YYYY') = '10/2009'
    AND LENGTH(CONTRATO) = 9
    AND C.LOJA = LOJA
    GROUP BY LOJA)

    Ficaria assim:


    (((SELECT SUM(VLRCURSO)
    FROM CYBELAR_CRESCABR
    WHERE FATURADO = 'S'
    AND DTVENDA BETWEEN TO_DATE('01/10/2009,'DD/MM/YYYY') AND LAST_DAY(TO_DATE('01/10/2009,'DD/MM/YYYY'))
    AND C.LOJA = LOJA )

    Tem bastante coisa que pode ser melhorada neste codigo, mas para isso devo entender melhor sua regra e estrutura, essa sao algumas que vi de relance.