Interbase - exemplo de sp para somar quantidade de pessoas separando por sexo e faixa etaria |
Top Previous Next |
|
Preciso gerar um gráfico que me mostre quantas pessoas estão cadastradas, agrupadas for faixa etária e exibindo o número por sexo. Exemplo da tabela:
Total 0_10 11_20 21_30 ----------------- ----------- ---------- -------- Total de Mulheres 1 26 18 Total de Homens 2 15 21
Sabendo-se que a minha tabela tem a seguinte estrutura:
CODIGO / NOME / SEXO / DATA_NASC ----
CREATE PROCEDURE NEW_PROCEDURE RETURNS ( CODSEXO VARCHAR(1), FAIXA00_10 INTEGER, FAIXA11_20 INTEGER, FAIXA21_30 INTEGER) AS DECLARE VARIABLE DATNAS DATE; DECLARE VARIABLE SEXO VARCHAR(1); DECLARE VARIABLE SEXOANT VARCHAR(1); DECLARE VARIABLE IDADE INTEGER; begin SEXOANT = '';
FAIXA00_10 = 0; FAIXA11_20 = 0; FAIXA21_30 = 0;
FOR SELECT NASCIMENTO_CLI, SEXO_CLI FROM CLIENTES ORDER BY SEXO_CLI INTO :DATNAS, :SEXO DO BEGIN if ((SEXOANT <> '') AND ( SEXOANT <> SEXO )) then BEGIN CODSEXO = SEXOANT; SUSPEND; END
IDADE = CAST( CAST( 'NOW' AS DATE) - DATNAS AS INTEGER ); IDADE = IDADE / 365;
if ( ( IDADE >= 00 ) AND ( IDADE <= 10 ) ) then FAIXA00_10 = FAIXA00_10 + 1; ELSE if ( ( IDADE >= 11 ) AND ( IDADE <= 20 ) ) then FAIXA11_20 = FAIXA11_20 + 1; ELSE if ( ( IDADE >= 21 ) AND ( IDADE <= 30) ) then FAIXA21_30 = FAIXA21_30 + 1;
SEXOANT = SEXO; END CODSEXO = SEXOANT; SUSPEND; end |