-
Total de itens
463 -
Registro em
-
Última visita
Tudo que Kakao postou
-
select count(*) as ALUNOS, count(status = 3 or null) as APROVADOS from turma_aluno WHERE indice_turma = 192
-
Tinha uma vírgula a mais. Vai postando os erros ai que eu vou corrigindo. SELECT ptrab.id, ptrab.cod_ptrab, ptrab.valor, ptrab.status, obra.cod_obra, obra.objeto, (SELECT cod_oog FROM sisdoc_v2.oog WHERE cod_ptrab = ptrab.id AND status = 'AP' ORDER BY versao DESC LIMIT 1) as oog FROM ( select max(ptrab.id) as id, obra.cod_obra from sisdoc_v2.ptrab_capa ptrab inner join obra on ptrab.cod_obra = obra.cod_obra group by obra.cod_obra ) s inner join sisdoc_v2.ptrab_capa ptrab on s.id = ptrab.id inner join obra on obra.cod_obra = s.cod_obra WHERE obra.id_om = 4002 AND obra.situacao in('EA') AND ptrab.status in('TT', 'AP') ORDER BY ptrab.cod_ptrab DESC
-
SELECT ptrab.id, ptrab.cod_ptrab, ptrab.valor, ptrab.status, obra.cod_obra, obra.objeto, (SELECT cod_oog FROM sisdoc_v2.oog WHERE cod_ptrab = ptrab.id AND status = 'AP' ORDER BY versao DESC LIMIT 1) as oog FROM ( select max(ptrab.id) as id, obra.cod_obra from sisdoc_v2.ptrab_capa ptrab inner join obra on ptrab.cod_obra = obra.cod_obra group by obra.cod_obra ) s inner join sisdoc_v2.ptrab_capa ptrab on s.id = ptrab.id, inner join obra on obra.cod_obra = s.cod_obra WHERE obra.id_om = 4002 AND obra.situacao in('EA') AND ptrab.status in('TT', 'AP') ORDER BY ptrab.cod_ptrab DESC Tente sempre usar JOIN explícito.
-
Tem que criar uma consulta dinâmica: create table tabela (id integer); insert into tabela (id) values (1), (2), (3); create function teste(text) returns setof tabela as $$ begin return query execute format('select * from %s', $1); end; $$ language plpgsql ; select * from teste('tabela'); id ---- 1 2 3 (3 rows)
-
Quando você usa uma expressão regular não há como procurar no índice. É o mesmo caso do LIKE '%texto%'. Como o texto pode estar em qualquer posição o índice é inútil. Ele poderia usar o índice se fosse LIKE 'text%' porque aí ele saberia que o texto procurado está no começo da string. No seu caso você pode tentar ~ '^100040 etc' para ver se ele usa o índice. Não sei.
-
O mais simples é tentar restringir ao máximo o conjunto com uma condição no WHERE. A alternativa não é trivial. Uma solução é criar uma coluna de inteiros com a ordenação desejada e quando for consultar usar esta coluna na cláusula WHERE: create table t (id int, name text, ordem_name int unique); insert into t (id, name) values (1, 'fulano'),(2, 'sicrano'),(3, 'beltrano') ; update t set ordem_name = s.ordem from ( select id, row_number() over(order by name) as ordem from t ) s where t.id = s.id ; select * from t; id | name | ordem_name ----+----------+------------ 1 | fulano | 2 2 | sicrano | 3 3 | beltrano | 1 (3 rows) Agora use a cláusula where para fazer o OFFSET e o LIMIT select * from t where ordem_name >= 2 and ordem_name < 2 + 2 ; id | name | ordem_name ----+---------+------------ 1 | fulano | 2 2 | sicrano | 3 (2 rows) O update deverá ser feito regularmente, por exemplo a cada 3 horas. Se for necessário manter sempre atualizado então a coluna ordem_name deve ser uma função.
-
Não tem as cláusulas WHERE ou ORDER BY?
-
Mostre a consulta que você está usando.
-
Você deve primeiro deletar o codigo correspondente na tabela referenciadora "estoqueconversao".
-
Use o iconv (Linux) para mudar a codificação do arquivo: # iconv --help Usage: iconv [OPTION...] [FILE...] Convert encoding of given files from one encoding to another. Input/Output format specification: -f, --from-code=NAME encoding of original text -t, --to-code=NAME encoding for output Information: -l, --list list all known coded character sets Output control: -c omit invalid characters from output -o, --output=FILE output file -s, --silent suppress warnings --verbose print progress information -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. Por exemplo se for para traduzir de ISO8859-1 para UTF-8: iconv -f ISO8859-1 -o UTF-8 meu_arquivo.txt
-
Na realidade talvez esteja errado. Confira o resultado e se estiver errado substitua "rank() over" por "row_number() over"
-
Não tenho os dados para testar mas tenta isso: select ano, cliente, faturamento from ( SELECT c.cliente, t.ano, SUM(f.valor_vendido) as faturamento, rank() over (partition by t.ano order by SUM(f.valor_vendido) desc) as r FROM f_vendas f JOIN cliente c ON f.id_cliente=c.id JOIN dim_tempo t ON f.id_tempo=t.id GROUP BY t.ano,c.cliente ) s where r <= 5 ORDER BY t.ano, r, c.cliente Se não der certo poste a mensagem de erro. Aliás essa tabela dim_tempo está meio esquisita. Foi você quem modelou?
-
Poste o que você já tentou.
-
Duvida Criação de tabela, nomenclatura e atrivutos
pergunta respondeu ao Renato89Bits de Kakao em PostgreSQL
"Errado" não tem nada. Mas tem algo muito estranho. Porque você está definindo os campos como arrays? Não faz sentido. Observações: Eu não usaria "tbCliente" mas apenas "Cliente". Ao invés de "idCliente" eu usaria apenas "id". O CEP são apenas 8 caracteres não 10. Faltou um campo para marcar o cliente como pessoa física ou jurídica. Pode ser que seja melhor uma tabela para cada um dos tipos. Muito importante. É melhor não misturar maiúsculas com minúsculas (Camel Case) nos nomes dos campos pois depois se você não se lembrar do nome exato e consultar por exemplo 'select "cnpjcpf"' ao invés de "cnpjCpf" você vai receber um erro de coluna não existente. É melhor separar com um hífem: "cpnj_cpf". Nos campos onde é possível você deve colocar uma restrição. Por exemplo no cep: "cep char(8) check(length(cep) = 8)" -
alteração de dados com base em dados de 2 tabelas via postgresql
pergunta respondeu ao SombraVarvas de Kakao em PostgreSQL
É possível: create table cidade (cod_cidade int, cod_estado int, cidade varchar(100)); create table ibge (cod_ibge int, cod_estado int, cidade varchar(100), ibge int); insert into cidade (cod_cidade, cod_estado, cidade) values (1, 1, 'Porto Alegre'), (2, 2, 'São Paulo'); insert into ibge (cod_ibge, cod_estado, cidade, ibge) values (1, 1, 'Porto Alegre', 220000), (2, 2, 'são Paulo', 330000); update ibge set cidade = to_char(cidade.cod_cidade, 'FM99999999') from cidade where ibge.cod_estado = cidade. cod_estado and ibge.cidade = cidade.cidade ; UPDATE 1 cpn=> select * from ibge; cod_ibge | cod_estado | cidade | ibge ----------+------------+-----------+-------- 2 | 2 | são Paulo | 330000 1 | 1 | 1 | 220000 (2 rows) Mas não é uma boa idéia pois vai depender de os nomes das cidades nas duas tabelas terem as mesmas grafias e também de existirem todas as cidades da tabela ibge na tabela cidade. Assim, como no exemplo, acima vão ficar faltando cidades sem converter e vai virar uma confusão. As duas tabelas não são referenciáveis entre si e não existe solução automatizada para este problema. O menos ruim que você pode fazer é consultar fazendo a junção das tabelas assim: select c.cod_cidade, c.cod_estado, c.cidade, i.cod_ibge, i.cod_estado, i.cidade, i.ibge from ibge i left outer join cidade c on i.cod_estado = c.cod_estado and i.cidade = c.cidade ; cod_cidade | cod_estado | cidade | cod_ibge | cod_estado | cidade | ibge ------------+------------+--------------+----------+------------+--------------+-------- 1 | 1 | Porto Alegre | 1 | 1 | Porto Alegre | 220000 | | | 2 | 2 | são Paulo | 330000 (2 rows) -
Dúvida Chave estrangeira e deleção em cascada
pergunta respondeu ao Jefferson Monteiro de Kakao em PostgreSQL
Eu criei as suas tabelas e para mim funcionou a deleção em cascata: insert into usuario (email, senha, tp_usuario) values ( 'fulano@x.com', 'senha', 'tipo' ); select * from usuario; id_usuario | email | senha | tp_usuario ------------+--------------+-------+------------ 1 | fulano@x.com | senha | tipo (1 row) insert into pessoa (id_usuario, nome, tel_movel, tel_fixo, tel_comercial, sexo) values ( 1, 'fulano', '848484', '383940', '84859', 'masculino' ); select * from pessoa; id_pessoa | id_usuario | nome | tel_movel | tel_fixo | tel_comercial | sexo -----------+------------+--------+-----------+----------+---------------+----------- 1 | 1 | fulano | 848484 | 383940 | 84859 | masculino (1 row) delete from usuario where id_usuario = 1; select * from pessoa; id_pessoa | id_usuario | nome | tel_movel | tel_fixo | tel_comercial | sexo -----------+------------+------+-----------+----------+---------------+------ (0 rows) Mas veja que as chaves (única, primária e estrangeira) não são herdadas. Assim as linhas correspondentes das tabelas filho (pesFisica e funcionario) não são deletadas. Para que isso aconteça você deve repetir as declarações de chave em cada tabela filho. A restrição é só para a tabela referenciada e assim é possível deletar as linhas das tabelas referenciadoras. A chave estrangeira não cria relação pai/filho. O termo correto é tabela referenciada/referenciadora. A observação da Angélica com relação à orientação a objeto é pertinente. O mecanismo de herança do postgresql não é o mesmo conceito de herança de OO. Você fez bem em postar o que fez porque demonstra o seu esforço mas o seu modelo está confuso. Tente de novo e depois poste que agente tenta ajudar. -
O servidor inicia? Se inicia tem alguma mensagem no log? Se não inicia você pode tentar o pg_resetxlog: 8.3 Em inglês 8.2 em português
-
Relacionamento (1,1) de Chave Estrangeira
pergunta respondeu ao juniormagalhaes de Kakao em PostgreSQL
A solução mais simples é incluir a coluna gerente na tabela loja fazendo referência para a tabela empregado: create table loja ( codigo numeric (3) primary key, nome varchar (40), telefone numeric (10), gerente_matricula numeric(3) references empregado (matricula) ); Eu usei o tipo numeric na minha resposta só para ficar compatível com o seu código. Mas é melhor usar integer nos campos de matrícula e de código. -
Com esta função não é possível exibir os *s. Mas exibir os *s não é bom porque mostra quantos caracteres foram digitados e isso pode já ser uma boa pista para alguém tentando descobrir a senha.
-
>>> import getpass >>> senha = getpass.getpass('senha: ') senha: >>> print senha minhasenha
-
Calcular valor total de bônus mediante tempo de horas trabalhadas
pergunta respondeu ao Nering de Kakao em PostgreSQL
Se você quiser usar um tipo data para armazenar horas trabalhadas use o tipo interval: create table t (total_horas interval); insert into t (total_horas) values ('2 hours 27 minutes'), ('1:18:00') ; select * from t; total_horas ------------- 02:27:00 01:18:00 (2 rows) Agora você pode extrair os segundos trabalhados usando a função extract: select total_horas, extract(epoch from total_horas) as segundos, extract(epoch from total_horas) / 60 / 60 as horas, extract(epoch from total_horas) / 60 / 60 * 12.00 as valor from t ; total_horas | segundos | horas | valor -------------+----------+-------+------- 02:27:00 | 8820 | 2.45 | 29.4 01:18:00 | 4680 | 1.3 | 15.6 (2 rows) -
Existem algumas bases prontas para testes: http://wiki.postgresql.org/wiki/Sample_Databases O pgbench talvez seja o mais fácil de começar: http://wiki.postgresql.org/wiki/Pgbench http://www.postgresql.org/docs/9.1/static/pgbench.html
-
O que já está utf-8? O editor? E a página tem a etiqueta que eu postei?
-
Coloque a seguinte etiqueta dentro da etiqueta <head> da página HTML: <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> Faça o seu editor gravar as páginas em UTF-8. No psql digite \l para mostrar a codificação das bases.
-
Eu acho que o melhor seria que a tabela history_services tivesse apenas os campos service_id, status, status_date com chave estrangeira no campo service_id apontando para o campo id da tabela services e com chave primária composta de service_id e status_date. Quanto ao trigger mostre o que você já tentou.