Pular para o conteúdo
Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Autor
    Posts
  • #83918
    bizoca
    Participante

      Tem um SQL rodando aqui na empresa que começa com With.

      WITH IND_SERVICOS AS (SELECT SUM(DECODE(IND.CD_INDICADOR, 86, IND.VL_INDICADOR, 0)) VOLUME_PONTOS...

      O que isto significa??

      #83920
      Avatar photoLeonardo Litz
      Participante

        Posta a query toda ai para gente ver

        #83921
        Marcio68Almeida
        Participante

          isso está com cara de segunda linha de comando…
          falta a parte de cima…

          #83922
          bizoca
          Participante

            WITH IND_SERVICOS AS ( SELECT SUM(DECODE(IND.CD_INDICADOR, 86, IND.VL_INDICADOR, 0)) VOLUME_PONTOS, SUM(DECODE(IND.CD_INDICADOR, 28, IND.VL_INDICADOR, 0)) QT_ATIVAS, SUM(DECODE(IND.CD_INDICADOR, 29, IND.VL_INDICADOR, 0)) QT_INATIVAS, SUM(DECODE(IND.CD_INDICADOR, 11, IND.VL_INDICADOR, 0)) NM_TOTAL_PEDIDOS, SUM(DECODE(IND.CD_INDICADOR, 63, IND.VL_INDICADOR, 0)) NM_INICIOS, SUM(DECODE(IND.CD_INDICADOR, 176, IND.VL_INDICADOR, 0)) NM_INICIOS_COMPLETO, PKG_SCNOB_RPT_IND_SERVICOS.FNC_CALCULA_TOT_POT_INI_COMPL(:B4 ,:B1 ) NM_POT_INI_COMPLETO, SUM(DECODE(IND.CD_INDICADOR, 327, IND.VL_INDICADOR, 0)) NM_SAINDO_GRUPO, SUM(DECODE(IND.CD_INDICADOR, 328, IND.VL_INDICADOR, 0)) NM_SAIU_GRUPO, SUM(DECODE(IND.CD_INDICADOR, 32, IND.VL_INDICADOR, 0)) NM_TOTAL_CADASTRO, NVL(PKG_SCNOB_RPT_IND_SERVICOS.F_GET_VALOR(:B4 ,:B1 ),0) NM_VALOR_SER_PAGO FROM T_EC_SETOR_PERFIL_CICLO IND WHERE IND.CD_TIPO_ESTRUTURA_COMERCIAL =:B3 AND IND.CD_ESTRUTURA_COMERCIAL = :B2 AND IND.NM_CICLO_OPERACIONAL = :B1 AND IND.CD_PERFIL = 1) SELECT VOLUME_PONTOS, QT_ATIVAS, QT_INATIVAS, NM_TOTAL_PEDIDOS, ROUND(DECODE(SIGN(VOLUME_PONTOS),1,QT_ATIVAS/VOLUME_PONTOS,0),2) NM_PONTOS_POR_CN, NM_INICIOS, NM_INICIOS_COMPLETO, PKG_SCNOB_RPT_IND_SERVICOS.FNC_CALCULA_TOT_POT_INI_COMPL(:B4 ,:B1 ) NM_POT_INI_COMPLETO, NM_SAINDO_GRUPO, NM_SAIU_GRUPO, NM_TOTAL_CADASTRO, ROUND(DECODE(SIGN(NM_TOTAL_CADASTRO),1,(QT_ATIVAS*100/NM_TOTAL_CADASTRO),0),2) NM_PORC_ATIVIDADE, NM_VALOR_SER_PAGO FROM IND_SERVICOS

            #83924
            Avatar photoLeonardo Litz
            Participante

              Cara, esse WITH pode ser algum comando de cubos, mas para saber exatamente o que esta sendo feito nessa query precisa ver ele inteira.

              Vlw

              #83925
              bizoca
              Participante

                [quote=”Litz”:1nq8zwq8]Cara, esse WITH pode ser algum comando de cubos, mas para saber exatamente o que esta sendo feito nessa query precisa ver ele inteira.

                Vlw[/quote]

                Então, eu peguei essa query no grid control, rodando como principal atividade e consumindo um absurdo de CPU. Está escrita exatamente assim no banco. E dessa maneira nem o plano de execução dela eu consigo ver.
                Mais uma coisa, eu sou menina 🙄

                #83926
                Avatar photoLeonardo Litz
                Participante

                  Olá querida, perdoe-me… pelo nick achei que fosse menino…rs

                  tenta pegar essa query completa no v$sql

                  select *
                  from v$sql

                  enquanto ela estiver sendo executada a coluna users_executing estara com valor 1.

                  Vlw.

                  #83929
                  Ricardo Portilho Proni
                  Participante

                    select sql_fulltext from v$sql where sql_text like ´%WITH%;

                    #83933
                    Anônimo

                      Olá !!!

                      Esse comando With é como você tivesse colocado um “Apelido” em uma SubQuerie.

                      Veja exemplo abaixo:
                      – Primeiro coloquei o nome de dept_costs no primeiro SubSelect.
                      – Depois eu coloquei o nome de avg_cost no segundo SubSelect
                      – Por fim eu fiz um Select normal utilizando esses dois SubSelect acima porém como eles fossem tabelas.

                      WITH
                      dept_costs AS (
                      SELECT department_name, SUM(salary) dept_total
                      FROM employees e, departments d
                      WHERE e.department_id = d.department_id
                      GROUP BY department_name),
                      avg_cost AS (
                      SELECT SUM(dept_total)/COUNT(*) avg
                      FROM dept_costs)
                      SELECT * FROM dept_costs
                      WHERE dept_total >
                      (SELECT avg FROM avg_cost)
                      ORDER BY department_name;

                      Abrax,

                      Leandro

                      #83962
                      Rodrigo Mesquita
                      Participante

                        O problema ai não é o “WITH”. tem 9 SUM´s 2 subselects, algumas chamadas a funcoes dentro de packages para montar a consulta. Tem que rever a a consulta, sua utilidade e tentar “enxugar” mais.

                        #83992
                        bizoca
                        Participante

                          Vou tentar rever a query… obrigada a todos!! 😉

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