Pular para o conteúdo
  • Este tópico contém 6 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por Avatar photoLeonardo Litz.
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #83277
    midy
    Participante

      Não sei o q utilizo p inserir na tabela maior_salario, o id e o nome completo com concatenação, o salario dos empregados com os 10 salarios maiores….

      Faça um procedimento armazenado que insira na tabela maior_salario o Id, o nome completo ( concatenação do prim_nome com o ult_nome ), o cargo e o salario dos empregados com os 10 maiores salarios.Voce deverá implementar a procedure com um cursor em uma estrutura de FOR. Obs Se existirem empregados com salarios iguais todos deveram ser listados.

      Comando de criação da tabela maior_salario

      CREATE TABLE maior_salario
      (id NUMBER(7),
      nome VARCHAR2(20) ,
      cargo VARCHAR2(25),
      salario NUMBER(11, 2),
      CONSTRAINT maior_salario_id_pk PRIMARY KEY (id));

      #83278
      midy
      Participante

        SERIA EM PLSQL…. E TO UTILIZANDO O BANCO DE DADOS ORACLE

        #83279
        Anônimo

          [quote=”midy”:2lmj649c]SERIA EM PLSQL…. E TO UTILIZANDO O BANCO DE DADOS ORACLE[/quote]

          faz um select para pegar o maior salario e insert na tabela criada

          #83280
          Anônimo

            [quote=”midy”:2gah5xii]Não sei o q utilizo p inserir na tabela maior_salario, o id e o nome completo com concatenação, o salario dos empregados com os 10 salarios maiores….

            Faça um procedimento armazenado que insira na tabela maior_salario o Id, o nome completo ( concatenação do prim_nome com o ult_nome ), o cargo e o salario dos empregados com os 10 maiores salarios.Voce deverá implementar a procedure com um cursor em uma estrutura de FOR. Obs Se existirem empregados com salarios iguais todos deveram ser listados.

            Comando de criação da tabela maior_salario

            CREATE TABLE maior_salario
            (id NUMBER(7),
            nome VARCHAR2(20) ,
            cargo VARCHAR2(25),
            salario NUMBER(11, 2),
            CONSTRAINT maior_salario_id_pk PRIMARY KEY (id));[/quote]

            SELECT NOME, CARGO, SALARIO,
            FROM NOME_TABELA_ONDE_ESTA_OS_SALARIOS A
            ORDER BY DESC SALARIO

            #83282
            Rodrigo Mesquita
            Participante

              O Oracle possue uma função chamada RANK, pesquisando no google vc vai encontrar vários exemplos e explicações de como ela funciona.

              Não sei como é a sua tabela com os salarios dos funcionários, mais no exemplo vamos considerar que a tabela que vai ser consultada é assim
              create table SALARIOS_FUNCIONARIOS
              (
              ID NUMBER(2),
              PRIM_NOME VARCHAR2(100),
              ULT_NOME VARCHAR2(100),
              CARGO NUMBER(2),
              SALARIO NUMBER(4)
              );

              a procedure ficaria assim

              CREATE OR REPLACE PROCEDURE INSERE_SALARIOS IS

              CURSOR C_SAL IS (select ID, NOME, CARGO, SALARIO
              from (select ID,
              PRIM_NOME || ‘ ‘ || ULT_NOME NOME,
              CARGO,
              SALARIO,
              dense_rank() OVER(PARTITION BY ‘A’ ORDER BY SALARIO DESC) rank
              from SALARIOS_FUNCIONARIOS)
              where rank <= 10)
              BEGIN
              FOR I IN C_SAL LOOP
              INSERT INTO MAIOR_SALARIO VALUES (I.ID,I.NOME,I.CARGO,I.SALARIO);
              END LOOP;
              commit;
              END INSERE_SALARIOS;

              #83661
              midy
              Participante

                #83685
                Avatar photoLeonardo Litz
                Participante

                  Segue exemplo…..

                  declare
                  v_id number;
                  c number := 0;

                  begin

                  for dd in (select nome_funcionario,sobrenome_funcionario,cargo,salario
                  from tabela
                  order by salario desc) loop

                  c:= c + 1;

                  select nvl(max(ms.id),1)
                  into v_id
                  from maior_salario ms

                  insert into maior_salario(id,nome,cargo,salario)
                  values(v_id,dd.nome_funcionario||’ ‘||dd.sobrenome_funcionario,dd.cargo,dd.salario);

                  if(c > 5) then—sai do loop quando a passagem for a quinta
                  exit;
                  end if;

                  end loop;

                  end;

                  Valeu Leonardo Litz

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.
                plugins premium WordPress