- Este tópico contém 10 respostas, 6 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por bizoca.
-
AutorPosts
-
24 de novembro de 2008 às 3:37 pm #83918bizocaParticipante
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??
24 de novembro de 2008 às 3:59 pm #83920Leonardo LitzParticipantePosta a query toda ai para gente ver
24 de novembro de 2008 às 4:04 pm #83921Marcio68AlmeidaParticipanteisso está com cara de segunda linha de comando…
falta a parte de cima…24 de novembro de 2008 às 4:09 pm #83922bizocaParticipanteWITH 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
24 de novembro de 2008 às 6:44 pm #83924Leonardo LitzParticipanteCara, esse WITH pode ser algum comando de cubos, mas para saber exatamente o que esta sendo feito nessa query precisa ver ele inteira.
Vlw
24 de novembro de 2008 às 7:00 pm #83925bizocaParticipante[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 🙄24 de novembro de 2008 às 7:14 pm #83926Leonardo LitzParticipanteOlá querida, perdoe-me… pelo nick achei que fosse menino…rs
tenta pegar essa query completa no v$sql
select *
from v$sqlenquanto ela estiver sendo executada a coluna users_executing estara com valor 1.
Vlw.
24 de novembro de 2008 às 7:46 pm #83929Ricardo Portilho ProniParticipanteselect sql_fulltext from v$sql where sql_text like ´%WITH%;
24 de novembro de 2008 às 9:16 pm #83933AnônimoOlá !!!
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
25 de novembro de 2008 às 5:06 pm #83962Rodrigo MesquitaParticipanteO 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.
27 de novembro de 2008 às 3:01 pm #83992bizocaParticipanteVou tentar rever a query… obrigada a todos!! 😉
-
AutorPosts
- Você deve fazer login para responder a este tópico.