Ir para conteúdo
Fórum Script Brasil

Kakao

Membros
  • Total de itens

    463
  • Registro em

  • Última visita

Tudo que Kakao postou

  1. Você usou o pg_dump da versão 8.4? Tem que usar sempre o da versão mais recente.
  2. Não é necessário fazer concatenação: select '1970-01-01 00:00:00'::timestamp + 1342207440.00000000 * interval '1 second'; ?column? --------------------- 2012-07-13 19:24:00
  3. Mostre como você conecta na base. No psql mostre a saída do comando \l
  4. Não é possível restringir a estrutura das tabelas.
  5. Luis, eu só vi agora que você editou a última pergunta. Então fica assim: create or replace function compare_vendas( range_1 daterange, range_2 daterange ) returns table( nome text, codpro text, quant_range_1 bigint, valor_range_1 numeric, quant_range_2 bigint, valor_range_2 numeric ) as $$ select p.nome, p.codpro, sum(v.pecas * (v.data <@ range_1)::int), sum(v.valortotal * (v.data <@ range_1)::int), sum(v.pecas * (v.data <@ range_2)::int), sum(v.valortotal * (v.data <@ range_2)::int) from public.fato_vendas_franquias v inner join public.dim_produto p on p.sk_codpro = v.sk_codpro where v.data <@ range_1 or v.data <@ range_2 group by p.nome, p.codpro order by p.codpro asc; $$ language sql; Estou supondo que fato_vendas_franquias.data seja to tipo date. O tipo daterange com suas funções facilita este tipo de comparação. Se for construir a chamada manualmente é mais fácil fazer o cast select * from compare_vendas( '[2013-05-01, 2013-05-15]'::daterange, '[2014-05-01, 2014-05-15]'::daterange ); Se for passar os parâmetros pelo cliente é melhor usar o construtor select * from compare_vendas( daterange('2013-05-01'::date, '2013-05-15'::date, '[]'), daterange('2014-05-01'::date, '2014-05-15'::date, '[]') );
  6. Aí tem que ser função: create or replace function compare_vendas(ano_1 int, ano_2 int) returns table( nome text, codpro text, quant_ano_1 bigint, valor_ano_1 numeric, quant_ano_2 bigint, valor_ano_2 numeric ) as $$ select p.nome, p.codpro, sum(v.pecas * (extract(year from v.data) = ano_1)::int), sum(v.valortotal * (extract(year from v.data) = ano_1)::int), sum(v.pecas * (extract(year from v.data) = ano_2)::int), sum(v.valortotal * (extract(year from v.data) = ano_2)::int) from public.fato_vendas_franquias v inner join public.dim_produto p on p.sk_codpro = v.sk_codpro where v.data >= ano_1::text || '-01-01' and v.data < (ano_2 + 1)::text || '-01-01' group by p.nome, p.codpro order by p.codpro asc; $$ language sql; Se necessário substitua os tipos das colunas retornadas pela função pelos tipos adequados. Para chamar: select * from compare_vendas(2014, 2015);
  7. select p.nome, sum(v.pecas * (extract(year from v.data) = 2014)::int) as quant2014, sum(v.valortotal * (extract(year from v.data) = 2014)::int) as valor2014, sum(v.pecas * (extract(year from v.data) = 2015)::int) as quant2015, sum(v.valortotal * (extract(year from v.data) = 2015)::int) as valor2015 from public.fato_vendas_franquias v inner join public.dim_produto p on p.sk_codpro = v.sk_codpro where v.data >= '2014-01-01' and v.data < '2016-01-01'
  8. create or replace function ibge_dv(codigo char(6)) returns char(1) as $$ select ((10 - resto) * (resto != 0)::int)::char(1) from ( select ( a135 + left(a2, 1)::int + right(a2, 1)::int + left(a4, 1)::int + right(a4, 1)::int + left(a6, 1)::int + right(a6, 1)::int ) % 10 as resto from ( select a[1] + a[3] + a[5] as a135, to_char(a[2] * 2, 'FM09') as a2, to_char(a[4] * 2, 'FM09') as a4, to_char(a[6] * 2, 'FM09') as a6 from ( select string_to_array(codigo, null)::integer[] as a ) s ) s ) s ; $$ language sql; select ibge_dv('355030'); ibge_dv --------- 8
  9. Parece que é mais ou menos isso: select q.agent, q.queuename as queuename, rm.nome as Agent, count(event like '%ABANDON%' or null) as perdida, count(event like '%COMPLETE%' or null) as atendida, count(event = 'TRANSFER' or null) as transferida, from queue_log q inner join f_ramal_virtual rm on rm.ramal_virtual = q.agent where q.event != 'RINGNOANSWER' and (${prmnomefila} is null or q.queuename = ${prmnomefila}) and array[ time::date = current_date - 1, time::date = current_date - 7, time::date = current_date - 30, time::date between ${prmdatainicial} and ${prmdatafinal} ][${prmintervalo}] group by 1, 2, 3
  10. Faça: show time zone;O tipo do campo é timezone e não timezonetz. Para mostrar em uma determinada time zone use: select create_at at time zone 'brt';
  11. Poste o resultado: select created_at, created_at at time zone 'utc' from minha_tabela limit 1;
  12. where date_trunc('month', arte.artedataregistro) = date_trunc('month', current_date - interval '1 month')
  13. Como você pode ver na minha consulta o valor é 3 o que está correto. Inclua o valor passado no parâmtro na lista do select para ver se não há nenhum problema de codificação.
  14. No order by você está comparando só o nome: levenshtein(upper(nome), upper('1721333100PSF - Programa de Saúde da Família')) Para evitar este tipo de erro use o posicionamento da coluna no order by: with naturezareceitasiga(id, codigo, nome) as ( values (1, '1721333100PSF', 'Programa de Saúde da Família') ) select levenshtein(upper(nrs.codigo || nrs.nome), upper('1721333100PSF - Programa de Saúde da Família')) as ctrl, coalesce(nrs.id,0) as id, nrs.nome, upper(nrs.codigo || nrs.nome) as nomeNatRecSiga from naturezareceitasiga nrs order by 1 ; ctrl | id | nome | nomenatrecsiga ------+----+------------------------------+------------------------------------------- 3 | 1 | Programa de Saúde da Família | 1721333100PSFPROGRAMA DE SAÚDE DA FAMÍLIA
  15. O que é taxa de acerto? Mostre um exemplo de strings e o resultado.
  16. Você tentou reindexar a base? reindex system minha_base;
  17. É VB.NET/ASP.NET? Se for, os clientes fazem manutenção do estado da página?
  18. Onde estão os clientes VB ou ASP em relação ao servidor? A demora pode estar na transmissão do resultado para os clientes e não na execução da consulta.
  19. O 8.3 não tem generate_series para datas. Tem que montar as datas a partir de uma série de inteiros: select to_char(gdata, 'DD') as dia_sem, count(date_part('year',data) = 2012 or null) as "2012", count(date_part('year',data) = 2013 or null) as "2013", count(date_part('year',data) = 2014 or null) as "2014", sum(case when date_part('year',data) = 2015 then 1 end) as "2015", count(*) as total from admgis.controle_mortes cm right join ( select '2012-01-01'::date + i as gdata from generate_series ( 0, '2015-12-31'::date - '2012-01-01'::date ) g(i) ) g on g.gdata = cm.data where subjetividade = 'CVLI' and cidade = 'Arapiraca' and date_part('month',data) = 01 group by 1 order by 1
  20. select to_char(gdata, 'DD') as dia_sem, count(date_part('year',data) = 2012 or null) as "2012", count(date_part('year',data) = 2013 or null) as "2013", count(date_part('year',data) = 2014 or null) as "2014", sum(case when date_part('year',data) = 2015 then 1 end) as "2015", count(*) as total from admgis.controle_mortes cm right join generate_series ( '2012-01-01'::timestamp, '2015-12-31'::timestamp, interval '1 day' ) g (gdata) on g.gdata = cm.data where subjetividade = 'CVLI' and cidade = 'Arapiraca' and date_part('month',data) = 01 group by 1 order by 1 Qual é a versão?
  21. select to_char(gdata, 'DD') as dia_sem, count(date_part('year',data) = 2012 or null) as "2012", count(date_part('year',data) = 2013 or null) as "2013", count(date_part('year',data) = 2014 or null) as "2014", sum(case when date_part('year',data) = 2015 then 1 end) as "2015", count(*) as total from admgis.controle_mortes cm right join generate_series ( '2012-01-01'::timestamp, '2015-12-31', '1 day' ) g (gdata) on g.gdata = cm.data where subjetividade = 'CVLI' and cidade = 'Arapiraca' and date_part('month',data) = 01 group by 1 order by 1
  22. Esta mensagem de erro é gerada pelo cliente. Provavelmente pelo driver. O desenvolvedor tem que mostrar o código no cliente que faz a consulta. Até que ele faça isso não há nada que sugira que o servidor esteja falhando.
  23. Renomeie a tabela: alter table "fornecedor" rename to fornecedor; Se a tabela tiver dependências ele vai dar erro e você deverá retirá-las antes e depois recriar. Mas tem alguma coisa mal explicada neste problema pois "fornecedor" em minúsculas com aspas é igual a fornecedor sem aspas.
  24. Use o http://sqlfiddle.com/#!15 para testar
×
×
  • Criar Novo...