none
Possibilidade de identificar o percentual de utilização de cada EPI por funcionario - SQL

    Pergunta

  • Olá Pessoal sou nova aqui

    e precisava da ajudinha de vocês, eu precisaval calcular o percentual de utilização de cada EPI por funcionario de uma empresa

    * EPI seria um produto da empresa que o funcionario iria utilizar conforme a sua necessidade.

    tenho aqui a tabela funcionario

    CREATE TABLE funcionario(
    matricula VARCHAR(12) NOT NULL,
    nome_func VARCHAR(50) NOT NULL,
    CONSTRAINT PK_FUNCIONARIO PRIMARY KEY (matricula)

    e a tabela EPI com os dados:

    CREATE TABLE epi(
    id_epi VARCHAR(100) UNIQUE,
    data_proximo_teste DATE,
    validade DATE,
    data_rec DATE,
    cnpj_empresa VARCHAR(18),
    id_tepi INTEGER NOT NULL,/*15/06*/
    id_mepi INTEGER NOT NULL,/*15/06*/
    nota_fiscal VARCHAR(50) NOT NULL,
    emissao_nf DATE,
    fabricante VARCHAR(50),
    responsavel VARCHAR(12) NOT NULL,
    funcional BOOLEAN DEFAULT TRUE,
    estoque BOOLEAN DEFAULT TRUE,
    unico INTEGER NOT NULL,/*15/06*/
    CONSTRAINT PK_EPI PRIMARY KEY (id_epi,id_tepi,id_mepi),/*15/06*/
    CONSTRAINT FK_EPI_EMPRESA FOREIGN KEY (cnpj_empresa) REFERENCES empresa (cnpj_empresa) ON DELETE CASCADE,
    CONSTRAINT FK_EPI_TIPOEPI FOREIGN KEY (id_tepi) REFERENCES tipo_epi (id_tepi) ON DELETE CASCADE,/*15/06*/
    CONSTRAINT FK_EPI_MODELOEPI FOREIGN KEY (id_mepi) REFERENCES modelo_epi (id_mepi) ON DELETE CASCADE,/*15/06*/
    CONSTRAINT FK_EPI_FUNCIONARIO FOREIGN KEY (responsavel) REFERENCES acesso(matricula) ON DELETE CASCADE

    Como realizar o calculo percentual estou perdida,

    Obrigada

    sexta-feira, 21 de fevereiro de 2014 20:08

Respostas

  • Fernanda, se você está perdida, imagina nós, que só temos as tabelas acima para montar a consulta...   ;)

    No código que transcreveu consta a existência das tabelas FUNCIONARIO, EPI, EMPRESA, TIPO_EPI, MODELO_EPI e ACESSO.

    Me parece que a coluna RESPONSAVEL indica a que funcionário o EPI está alocado; é isso? 

    Poderia descrever o conteúdo das colunas id_tepi e id_mepi? Me parece que elas é que contém a informação necessária para o cálculo de percentual.

    Dependendo da atividade, um funcionário não necessita EPI. Ou então, pode necessitar de mais de um EPI (por exemplo, botas, luvas, óculos de proteção). Como saber se um funcionário necessita ou não de EPI?

    Na tabela FUNCIONARIO constam somente os funcionários atualmente empregados ou também constam funcionários que não mais trabalham na empresa? Se for o segundo caso, como selecionar somente os atualmente empregados?

    Para que serve a tabela ACESSO?

    Poderia transcrever a declaração das tabelas TIPO_EPI e MODELO_EPI?

    O percentual deve ser por tipo de EPI  ou  por tipo de EPI e modelo de EPI?

    O percentual deve ser calculado considerando-se todos os funcionários (mesmo os que não utilizam EPI) ou somente considerar os que utilizam EPI? 

    Poderia postar exemplo do relatório de saída? Isto é, quais informações devem constar no relatório.

     
    Considerando-se as pouquíssimas informações postadas, eis uma possibilidade:

    -- código 1 v2
    ;with
    AcumFunc as (
    SELECT count(*) as QtdFunc
      from FUNCIONARIO
      --where ...
    ),
    AcumFuncEPI as (
    SELECT count(distint responsavel) as QtdFuncEPI
    from EPI
    --where ...
    ), AcumEPI as ( SELECT id_tepi, id_mepi, count(*) as QtdEPI from EPI
    --where ... group by id_tepi, id_mepi ) SELECT id_tepi, id_mepi, QtdEPI as [Quant. EPI],
    cast((QtdEPI / QtdFunc) as real) * 100 as [% funcionários] from AcumEPI cross join AcumFunc;



        José Diz     Belo Horizonte, MG - Brasil
    (Se encontrou a solução nesta resposta, ou se o conteúdo foi útil, lembre-se de marcá-la)


    • Editado Jose.Diz domingo, 23 de fevereiro de 2014 23:09
    • Marcado como Resposta Giovani CrModerator segunda-feira, 24 de fevereiro de 2014 10:39
    sábado, 22 de fevereiro de 2014 11:08