Você está na página 1de 1

Sintaxe de conversão para converter uma soma em Float

Perguntado 8 anos, 4 meses atrás - Modificado 2 anos, 1 mês atrás - Visto 109 mil vezes

Usando o PostgreSQL 9.3, desejo converter os valores calculados para o tipo de


dados float.

Minha primeira tentativa:


SELECT float(SUM(Seconds))/-1323 AS Averag;
Dá-me este erro:
syntax error at or near "SUM"
Minha segunda tentativa:
SELECT to_float(SUM(Seconds))/-1323 AS Averag;
Dá-me este erro:
function to_float(bigint) does not exist

Eu uso a sintaxe de conversão abreviada em quase todos os lugares:


SELECT sum(seconds)::float / -1323 AS averag;

Mais detalhes:

Sim! Muito obrigado. Mas qual é a melhor maneira de lançar. Isso é usar ::ou usar CAST?

@MAK: Ambos fazem o mesmo. Eu quase sempre uso o mais curto e claro
(IMO) ::target_type. Siga o link na minha pergunta e neste comentário você
encontrará tudo o que há para saber.
• para este caso, "flutuar" é o mesmo que "precisão dupla"?
• o que quero dizer é, é de 8 bytes?
• @Kokizzu: Sim. float= float8= double precision

Você precisa usar a castsintaxe:


SELECT CAST (SUM(Seconds) AS FLOAT)/-1323 AS Averag;

• Qual é a diferença entre CASTe CONVERT?


No PostgreSQL, casté usado para conversões de tipo (por exemplo, intpara float,
como este exemplo faz) e converté usado para alterar as codificações de string.

Não é exatamente um casting, mas um truque para fazer o trabalho :) e funciona em quase
qualquer idioma.

SELECT SUM(Segundos)/-1323.0 AS Averag; OU


SELECT SUM(Segundos)*1.0/-1323 AS Averag;

Você também pode gostar