Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #93643
    tidinas
    Participante

      Olá pessoal!

      Este é meu primeiro post aqui e sou novo no mundo dos banco de dados. Estou fazendo alguns exercícios e empaquei neste aqui:

      “Criei um relatório que exiba o nome, o local de trabalho e o número de funcionários de cada departamento. Certifique-se de que o relatório também inclua departamentos sem funcionários.”

      abaixo segue a estrutura das 3 tabelas envolvidas:

      SQL> desc employees
      Nome Nulo? Tipo
      —————————————– ——– ————-
      EMPLOYEE_ID NOT NULL NUMBER(6)
      LAST_NAME NOT NULL VARCHAR2(25)
      JOB_ID NOT NULL VARCHAR2(10)
      DEPARTMENT_ID NUMBER(4)

      SQL> DESC LOCATIONS
      Nome Nulo? Tipo
      —————————————– ——– ————-
      LOCATION_ID NOT NULL NUMBER(4)
      STREET_ADDRESS VARCHAR2(40)
      COUNTRY_ID CHAR(2)

      SQL> DESC DEPARTMENTS;
      Nome Nulo? Tipo
      —————————————– ——– ————-
      DEPARTMENT_ID NOT NULL NUMBER(4)
      DEPARTMENT_NAME NOT NULL VARCHAR2(30)
      LOCATION_ID NUMBER(4)

      Pelo que entendi, o exercício pede para que eu exiba o LAST_NAME da tabela EMPLOYEES, o STREET_ID do departamento do funcionário e a quantidade de funcionários por departamentos. Pois bem, olhem o que fiz:

      SELECT DEPARTMENT_ID, COUNT(LAST_NAME) FROM EMPLOYEES
      WHERE DEPARTMENT_ID IS NOT NULL
      GROUP BY DEPARTMENT_ID

      DEPARTMENT_ID COUNT(LAST_NAME)
      ————- —————-
      10 1
      20 2
      30 6
      40 1
      50 45

      Consegui fazer a contagem de funcionários por departamento, mas quanto ao nome do funcionário e o endereço, como incluo eles na consulta?

      grato!

      #93646
      marlontk
      Participante

        Opa.
        Pelo que entendi o relatório deve conter o nome do departamento,localização e quantidade de funcionários, sendo que é para listar departamentos com 0 funcionarios.
        Para este problema o sql seria.

        select departament_name, street_address,nvl(count(e.employee_id),0)
        from departaments d,locations l,employees e
        where d.departament_id = e.departament_id(+)
        and d.location_id = l.location_id
        group by departament_name, street_address

        Se tiver alguma duvida sobre alguma coisa no comando escreva.
        At+

        #93647
        Avatar photoLeonardo Litz
        Participante

          Tente assim:

          SELECT E.LAST_NAME,
          D.LOCATION_ID,
          D.DEPARTMENT_ID,
          (SELECT COUNT(*)
          FROM EMPLOYEES E2
          WHERE E2.DEPARTMENT_ID = E.DEPARTMENT_ID ) QTD_FUNC
          FROM EMPLOYEES E,
          DEPARTMENTS D
          WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
          GROUP BY E.LAST_NAME,
          D.LOCATION_ID,
          D.DEPARTMENT_ID

          Vlw Leonardo Litz

          #93648
          Peterson
          Participante

            Se quiser flautear seu relatório mais, inclua cabeçalho e rodapé nele adcionando essas linhas ao começo do script.

            TTITLE LFT ‘Data de Execução: ‘ _DATE CENTER ” RIGHT ‘Page: ‘ FORMAT 999 SQL.PNO SKIP2

            BTITLE CENTER ” RIGHT ‘Page: ‘ FORMAT 999 SQL.PNO

            SET ECHO OFF
            SET VERIFY OFF

            #93649
            Peterson
            Participante

              Perdão, houve um erro de digitação. Onde está LFT entenda LEFT

              #93695
              tidinas
              Participante

                Era isso que queria mesmo!!!! rss Obrigado senhores!

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