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