RES: [firebase-br] Fazer conta com tipo de dados varchar
Jony
jonyridel em yahoo.com.br
Sex Dez 2 13:11:01 -03 2005
Felipe fiz o SQL para somar, falta fazer o para tirar a media como vc pediu,
mas a partir da procedure q usei para converter o os campos para poder somar
pode-se fazer uma para gerar a media como vc quer.
SELECT
T.ID,
T.NOTA1,
T.NOTA2,
T.NOTA3,
cast( (SELECT po_valor FROM pstr_valor(T.NOTA1) ) as numeric(5,2)) +
cast( (SELECT po_valor FROM pstr_valor(T.NOTA2) ) as numeric(5,2)) +
cast( (SELECT po_valor FROM pstr_valor(T.NOTA3) ) as numeric(5,2)) +
cast( (SELECT po_valor FROM pstr_valor(T.NOTA4) ) as numeric(5,2)) as
TOTAL,
cast( (SELECT po_valor FROM pstr_valor(T.NOTA1) ) as numeric(5,2)) +
cast( (SELECT po_valor FROM pstr_valor(T.NOTA2) ) as numeric(5,2)) +
cast( (SELECT po_valor FROM pstr_valor(T.NOTA3) ) as numeric(5,2)) +
cast( (SELECT po_valor FROM pstr_valor(T.NOTA4) ) as numeric(5,2)) /4 as
Media
FROM TMP_TABLE T
ALTER PROCEDURE PSTR_VALOR (
PI_VALOR VARCHAR(10))
RETURNS (
PO_VALOR VARCHAR(10))
AS
DECLARE VARIABLE VV_AUX VARCHAR(10);
DECLARE VARIABLE VV_VALOR VARCHAR(10);
DECLARE VARIABLE VI_AUX SMALLINT;
DECLARE VARIABLE VV_COMANDO VARCHAR(100);
DECLARE VARIABLE VV_CHAR CHAR(1);
begin
/* Procedure Text */
vi_aux = 1;
vv_aux = '';
vv_valor = '';
while (vv_aux <> :PI_VALOR) do
begin
vv_comando = 'SELECT SUBSTRING('||''''||:PI_VALOR||''''||' FROM
'||:VI_AUX||' for 1) from rdb$database';
VV_CHAR = null;
execute statement VV_COMANDO into :VV_CHAR;
vv_aux = :vv_aux || SUBSTRING( :vv_char FROM 1 FOR 1);
if (SUBSTRING( :vv_char FROM 1 FOR 1) <> ',') then
vv_valor = :vv_valor || SUBSTRING( :vv_char FROM 1 FOR 1);
else
vv_valor = :vv_valor ||'.';
vi_aux = vi_aux + 1;
end
PO_VALOR = vv_valor;
suspend;
end
^
Espero ter ajudado,
----------------------------
Jony Ridel
Grupo Êxito - Salvador - BA
----------------------------
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Fellipe Henrique
Enviada em: sexta-feira, 2 de dezembro de 2005 08:45
Para: lista em firebase.com.br
Assunto: [firebase-br] Fazer conta com tipo de dados varchar
Olá, tenho os seguintes campos
nota1
nota2
nota3
nota4
media
Todos estão como varchar(5), como faço pra somar as notas e dividir por 4,
afim de me dar um numero com APENAS uma casa decimal, exemplo:
nota1: 15,8
nota2: 5,75
nota3: 11,8
nota4: 10
Total--> 43,35
media: 43,0
ou seja, se o decimal, for menor do que 5, tira ele e poe zero, se for
maior, acrescenta 1 e zera o decimal.
Alguma idéia? Desde já agradeço.
[]s
Fellipe H.
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.10/189 - Release Date: 30/11/2005
--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.10/190 - Release Date: 1/12/2005
_______________________________________________________
Yahoo! doce lar. Faça do Yahoo! sua homepage.
http://br.yahoo.com/homepageset.html
Mais detalhes sobre a lista de discussão lista