tag:blogger.com,1999:blog-5738872960415708519.post6634898913699200441..comments2024-01-29T06:38:46.574-03:00Comments on Blog do DBA/Instrutor Fábio Prado: Cláusula WITH (para tunar queries)Fábio Pradohttp://www.blogger.com/profile/05498446367081034213noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-5738872960415708519.post-20194560444893768472023-09-10T10:39:44.055-03:002023-09-10T10:39:44.055-03:00Obrigado pelo comentário!Obrigado pelo comentário!Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-72313751160613108182023-09-04T23:08:04.915-03:002023-09-04T23:08:04.915-03:00Eu já tinha visto o uso no Postgresql mas nunca no...Eu já tinha visto o uso no Postgresql mas nunca no oracle. Realmente muito bom e já estou usando em minhas querys. Obrigado grande Fábio pelo artigo. Excelente.Dicas de Tecnologia da Informação e Comunicaçãohttps://www.blogger.com/profile/08572928579301036365noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-5440220565255139302023-05-04T16:27:44.193-03:002023-05-04T16:27:44.193-03:00Fazer esse tipo de análise leva bastante tempo e e...Fazer esse tipo de análise leva bastante tempo e eu dei apenas uma lida rápida no seu problema. Pelo pouco que entendi, acredito que você não precisaria usar a cláusula WITH. Acredito que funções analíticas, tais como TOP, RANK etc irão te ajudar mais. Tem um artigo que explica o básico sobre funções analíticas aqui no blog. Sugiro você dar uma olhada nele, nas referências dele e pesquisar mais a fundo no Google.Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-25534415997358234172023-04-14T23:18:37.423-03:002023-04-14T23:18:37.423-03:00Parabéns!!!
Por favor, agradeço se for possível a...Parabéns!!! <br />Por favor, agradeço se for possível alguma dica... em um projeto sobre futebol, usando o WITH pode dá certo. <br /><br />Tabelas resumidas são:<br /><br />*Jogador<br />ncod_jogador<br />cnome_joagador<br /><br />*Frequencias<br />ncod_jogador<br />nFrequencia<br />dt_Frequencia<br /><br />As consultas que preciso são apenas duas, organizadas pelo total de frequência e assiduidade, sendo essa segunda ordem mais complexa, exemplo:<br /><br />Cada mês são 4 jogos, e as frequências são puxadas mês atual + os dois anteriores, a ordem por assiduidade deve ser comparada sempre a cada frequência anterior.<br /><br />Tipo dois atletas estão com 8 freq, sendo que o primeiro faltou o último jogo 07/04 e o segundo não, então o segundo já fica na frente na ordem, caso continuassem empatados, precisaria comparar frequências anteriores até chegar em uma que um faltou e esse ficará abaixo na ordem da relação.<br /><br />Abaixo o select inicial que falta ordenar por assiduidade:<br /><br />select<br /> frequencias.ncod_jogador,<br /> frequencias.nfrequencia,<br /> jogador.cnome_jogador<br />sum(nfrequencia) as Total_Freq<br /><br />from frequencias<br /> left join jogador on (frequencias.ncod_jogador = jogador.ncod_jogador)<br /> where CAST(frequencias.dt_frequencia as date)<br /> BETWEEN cast( dateadd (day, -90,current_date) as date) and cast(current_date as date)<br /><br /> Group by<br /> frequencias.ncod_jogador,<br /> frequencias.nfrequencia,<br /> jogador.cnome_jogador<br />Order by Total_Freq DESC;<br /><br />Edições Gerais - Joatan Show Manhttps://www.blogger.com/profile/06752663972896698656noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-36201128353721029152013-09-30T09:59:15.450-03:002013-09-30T09:59:15.450-03:00Fábio, muito obrigado.
Era isso mesmo que você ent...Fábio, muito obrigado.<br />Era isso mesmo que você entendeu. Tem uma pessoa, que se diz "responsável" por tunning de uma empresa, teimando que o WITH pode ser usado sem referenciarmos N vezes uma tabela ou X vezes a mesma subquery. Mas enfim!!!<br />Abs e sucesso!<br />Maia.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-60949761570185104512013-09-27T13:19:15.146-03:002013-09-27T13:19:15.146-03:00Maia, não sei se entendi muito bem o contexto do s...Maia, não sei se entendi muito bem o contexto do seu problema, mas vou responder do jeito que entendi. Não há sentido em usar a cláusula WITH se vc não usa uma ou mais tabelas N vezes dentro de uma instrução SQL. <br /><br />Qto ao substituir um cursor por uma cláusula WITH, se vc puder fazer isso, faça. EVITE SEMPRE PL/SQL se vc puder fazer o mesmo com SQL PURO. Quando vc cria um cursor vc está usando um bloco PL/SQL. Se vc não puder evitar o cursor, mas tiver uma tabela que é referenciada N vezes dentro da instrução SQL, utilize a cláusula WITH (por que não?), com certeza vc irá otimizá-la!<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-68598319379940555972013-09-27T13:09:36.339-03:002013-09-27T13:09:36.339-03:00Fábio, boa tarde, tudo bem?
Parabéns pelo post.
Me...Fábio, boa tarde, tudo bem?<br />Parabéns pelo post.<br />Me tira uma dúvida. Percebo que a cláusula WITH é interessante quando você usa subqueries redundantes.<br />Em qual ponto isso seria interessante utilizar a cláusula WITH num bloco PL/SQL, substituindo Cursores por isso, sem ter subqueries redundantes?<br />Que eu saiba, a cláusula WITH deverá ser usada, de qualquer forma, num retorno em um ROWTYPE, array, etc.<br />Abs e parabéns mais uma vez pelo site!!!<br />Maia.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-42723445598559651212012-10-01T14:14:00.626-03:002012-10-01T14:14:00.626-03:00De nada Unknown. Que bom que será útil!De nada Unknown. Que bom que será útil!Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-75854333872055969362012-10-01T13:43:37.795-03:002012-10-01T13:43:37.795-03:00Sensacional, Fábio! Artigo de fácil entendimento e...Sensacional, Fábio! Artigo de fácil entendimento e de grande utilidade. Obrigada. Unknownhttps://www.blogger.com/profile/18186839962560362921noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-41378892399319276532011-02-17T17:59:49.708-02:002011-02-17T17:59:49.708-02:00Obrigado Beatriz pelos comentários!Obrigado Beatriz pelos comentários!Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-61377325093667772982011-02-03T09:49:40.444-02:002011-02-03T09:49:40.444-02:00Muito Bom!
Super útil! Principalmente na sintuação...Muito Bom!<br />Super útil! Principalmente na sintuação em que é preciso verificar uma série de consistências nas consultas, nas quais são feitas várias subqueries, várias vezes cada uma.<br />Essa, realmente, é uma solução!<br />Ótima solução.Beatrizhttps://www.blogger.com/profile/08902528802477676330noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-25193065338028341412010-12-22T23:42:52.255-02:002010-12-22T23:42:52.255-02:00Legal, fico contente que o artigo tenha te ajudado...Legal, fico contente que o artigo tenha te ajudado! Abs.Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-50785959907316781532010-11-06T14:11:52.363-02:002010-11-06T14:11:52.363-02:00parabéns, estamos precisando testar numa situação ...parabéns, estamos precisando testar numa situação parecida. Não sei se ajuda, mas foi legal a dica ..Anonymousnoreply@blogger.com