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