Jump to content
gei

TABELA DE PRODUTIVIDADE

Recommended Posts

Boa noite.

Tenho um display que deverá exibir produtividade de alguns setores por dia, Mês, e retornar o percentual de meta de acordo com os valores dos dias, semanas e meses.

O total diário está tranquilo mas, como retornar o total  semanal, mensal e percentual alcançado?

Estou há mais de uma semana tentando resolver.

Estou usando o SQLSERVER 2017.

Se alguém puder ajudar agradeço.

 

SELECT REGISTRO_ATENDIMENTO_INTERNO_PSP.UsuarioInsert, DEPARTAMENTOS.NomeDepartamento,

COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Diário",
COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Semanal",
COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Mensal"
FROM REGISTRO_ATENDIMENTO_INTERNO_PSP 
INNER JOIN DEPARTAMENTOS 
ON REGISTRO_ATENDIMENTO_INTERNO_PSP.IdDepartamento=DEPARTAMENTOS.IdDepartamento
INNER JOIN COLABORADOR
ON REGISTRO_ATENDIMENTO_INTERNO_PSP.IdFunc=COLABORADOR.IdFunc
where convert(char(10),DataAtendimento,103) = convert(char(10),getdate(),103)

GROUP BY REGISTRO_ATENDIMENTO_INTERNO_PSP.UsuarioInsert, DEPARTAMENTOS.NomeDepartamento 

Share this post


Link to post
Share on other sites

Boa tarde Motta. Obrigado por responder meu post. Tentei usar sua sugestão mas não consegui resolver ainda. Acredito que por falta de conhecimento mais profundo em sql.

Somente o total diario retorna correto.

Segue query que estou usando:

SELECT 
    CONVERT(CHAR(10), R.DataAtendimento, 103) AS Data, R.UsuarioInsert, D.NomeDepartamento,
    COUNT(DATEPART(DAY, R.Qtd)) AS TOTALDIARIO,
    SUM(DATEPART(WEEK, R.DataAtendimento)) AS TOTALSEMANAL,
    SUM(DATEPART(MONTH, R.DataAtendimento)) AS TOTALMENSAL
FROM 
    REGISTRO_ATENDIMENTO_INTERNO_PSP R 
left JOIN  
    DEPARTAMENTOS D
ON 
    R.IdDepartamento = D.IdDepartamento
left JOIN 
    COLABORADOR C
ON 
    R.IdFunc = C.IdFunc
WHERE 
    R.DataAtendimento BETWEEN '01/03/2019' AND     '31/03/2019'
GROUP BY 
     R.UsuarioInsert, DATEPART(DAY, R.Qtd), DATEPART(WEEK, R.Qtd),DATEPART(MONTH, R.Qtd),D.NomeDepartamento, R.DataAtendimento, R.Qtd
    ORDER BY R.DataAtendimento, R.UsuarioInsert

 

Share this post


Link to post
Share on other sites

Creio ser isto

 

SELECT
    R.UsuarioInsert, D.NomeDepartamento,
    COUNT(DATEPART(DAY, R.Qtd)) AS TOTALDIARIO,
    (DATEPART(WEEK, R.DataAtendimento)) AS SEMANA,
    (DATEPART(MONTH, R.DataAtendimento)) AS mes
FROM
    REGISTRO_ATENDIMENTO_INTERNO_PSP R
left JOIN  
    DEPARTAMENTOS D
ON
    R.IdDepartamento = D.IdDepartamento
left JOIN
    COLABORADOR C
ON
    R.IdFunc = C.IdFunc
WHERE
    R.DataAtendimento BETWEEN '01/03/2019' AND     '31/03/2019'
GROUP BY
      R.UsuarioInsert, D.NomeDepartamento,
    (DATEPART(WEEK, R.DataAtendimento)),
    (DATEPART(MONTH, R.DataAtendimento))

 

Share this post


Link to post
Share on other sites

Então Motta.

 

o Retorno de semana e mês foi o numero da semana e do mês foi o numero da semana e do mês ao invés do agrupamento ou soma de registros dentro desses campos. Não sei se consegui explicar direito.

 

Usuario Insert                                               | NomeDepartamento | TotalDiario | Semana | Mês

----------------------------------------- +----------------------+------------+---------+-----

ANA CRISTINA DE BRITO GUIMARAES   |  PSICOLOGIA              | 23                  11              3
ANA CRISTINA DE BRITO GUIMARAES   |  PSICOLOGIA              | 1                    13              3
CATHERINE FERNANDES DUTHEIL         |  PSICOLOGIA              | 11                  11              3
CATHERINE FERNANDES DUTHEIL         |  PSICOLOGIA              | 1                     13             3
 

Share this post


Link to post
Share on other sites

Não , não entendi , faça um exemplo por favor

Share this post


Link to post
Share on other sites

Olá Motta.

 

A tabela abaixo representa o resultado da query e na coluna Semana retornou o numero da semana em que os dados foram inseridos e na coluna Mês a mesma coisa. Por ex.: os dados da primeira linha foram inseridos na decima primeira semana e no terceiro mês.

Eu estou tentando obter a quantidade de dados inseridos na semana 11 e no mes 3.

 

Usuario Insert                                               | NomeDepartamento | TotalDiario | Semana | Mês

----------------------------------------- +----------------------+------------+---------+-----

ANA CRISTINA DE BRITO GUIMARAES   |  PSICOLOGIA              |  23                 |  11          I    3
ANA CRISTINA DE BRITO GUIMARAES   |  PSICOLOGIA              |  1                   |  13          I    3
CATHERINE FERNANDES DUTHEIL         |  PSICOLOGIA              |  11                 |  11          |    3
CATHERINE FERNANDES DUTHEIL         |  PSICOLOGIA              |  1                   |  13           |    3

Share this post


Link to post
Share on other sites
SELECT
     COUNT(DATEPART(DAY, R.Qtd)) AS TOTALDIARIO,
    (DATEPART(WEEK, R.DataAtendimento)) AS SEMANA,
    (DATEPART(MONTH, R.DataAtendimento)) AS mes
FROM
    REGISTRO_ATENDIMENTO_INTERNO_PSP R
left JOIN  
    DEPARTAMENTOS D
ON
    R.IdDepartamento = D.IdDepartamento
left JOIN
    COLABORADOR C
ON
    R.IdFunc = C.IdFunc
WHERE
    R.DataAtendimento BETWEEN '01/03/2019' AND     '31/03/2019'
    and    (DATEPART(WEEK, R.DataAtendimento)) = 11
    and    (DATEPART(MONTH, R.DataAtendimento)) = 3
GROUP BY
     (DATEPART(WEEK, R.DataAtendimento)),
    (DATEPART(MONTH, R.DataAtendimento))

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By TheRonaldoStar
      Oii, fala ae pessoal!!
      Alguém pode me ajudar com uma coisa por favor?;
      Seguinte!, eu anteriormente fiz uma pergunta aqui no fórum recorrente a isso, mas eu conseguir uma solução parcial.
      Que era, fazer uma listagem de todos os cadastros e fazer a junção dos cadastros com uma coluna igual, Ou seja existem duas colunas [DE e Para], que recebem o id de quem está recebendo ou que está enviando a mensagem, eu conseguir fazer a tal listagem por grupo mas o problema que estou tendo é: que so faz o agrupamento de as colunas contiver o id por ex: [De = "1" e Para ="2"].
      Atualmente estou usando a codificação deste Jeito:
       
      $sql_2 = $db -> prepare("SELECT * FROM privado WHERE (Para = '$Meu_id') Or (De = '$Meu_id') GROUP BY Para, De DESC"); $sql_2 -> execute(); Esta consulta como pode ver ele busca todos os cadastros que tenha o meu ID ou seja do usuário online!, Após a consulta ele vei obter em um "while" somente o [ Id_De eo Id_Para ] desta forma:
      while($dados_2 = $sql_2 -> fetch(PDO::FETCH_OBJ)){ $Id_De = ($dados_2 -> De); $Id_Para = ($dados_2 -> Para); } Mas em fim eu gostaria de saber como mostrar somente um resultado ou seja o ultimo resultado que tiver o meu ID em ambas colunas [ Id_De ou Id_Para ].
      Antes de vocês me recomendar a função DESC LIMIT 'valor' saiba eu quero que liste todos os usuários que enviou ou recebeu minha mensagem não somente 1 ou seja se eu mandar um mensagem para o usuário 2 e ele me retornar uma mensagem vai mostrar somente o ultimo registro que tenha o meu ID e o id dele.
       
      Atenciosamente,
      ~Ronaldo
       
    • By Aureo Almeida
      Eu possuo em uma página em que existe um menu, com categorias inseridas a partir de um banco de dados, e na mesma página uma listagem de produtos.
      A função deste menu é enviar para a clausula where do SQL que lista os produtos parâmetros que permitam filtro dos produtos. Faço isso com a variável $_GET, da seguinte forma:
      $sub_id = $_GET['sct_id']; Isso funciona certinho, porém o problema é que quando a página é carregada, a não ser que seja feita uma opção no menu para selecionar os produtos, a listagem deles volta vazia e com o seguinte erro:
      array(0) { } Notice: Undefined index: sct_id in D:\XAMPP\htdocs\projeto\arq\cosm.php on line 76 Tentei desenvolver as seguinte condições que mudassem o SQL,  mas não consegui fazer dar certo:
      if(empty($sub_id = array(0))) $sql = "SELECT * FROM psd_produtos WHERE ctg_id = 1"; else { $sql = "SELECT * FROM psd_produtos WHERE ctg_id = 1 AND sct_id = '$sub_id'"; } Como fazer com que o SQL que orienta a consulta quando a página for carregada seja um, e quando passo parâmetro via GET seja outro?
    • By thunanchiu@hotmail,com
      Bom dia, gostaria dessa ajuda.
      Tenho uma tabela de "INSCRIÇÃO" onde a mesma possui 2 chaves estrangeiras (CAND_SQ e CANDPL_SQ). Ambas as chaves estrangeiras possuem um campo CPF.
      Gostaria de saber como eu trago os cpfs que são iguais dentro da inscrição.
      Ou seja, atualmente tenho uma INSCRIÇÃO onde pode ser feita de duas maneiras diferentes. Inscrição Regular e Inscrição Atraso. Quando eu for fazer a Inscrição Atraso, caso eu já tenha feito a Inscrição Regular não poderei fazer a Inscrição Atraso.
    • By TaisStream
      Como configurar essa query com inner join, no arquivo .xml?
      Me ajudem pf eu comecei mas estou perdida,  pesquisei já vi algo de /root... mas minha query esta diferente, nao sei se falta algo
       
       
      QUERY ATUAL:
      set mapreduce.job.queuename=low_relatorios; 
      set mapreduce.job.max.split.locations=100;
      SELECT a.num_msisdn,
             a.max_date
      FROM fact.dw_f_rcrg_gems_rate_subsc t
      INNER JOIN
        (SELECT num_msisdn,
                MAX(dat_operacao) AS max_date
         FROM fact.dw_f_rcrg_gems_rate_subsc
         WHERE (ref_date)>=$startdate
           AND ref_date<=$finaldate
           AND ide_plano_tarifario_atual IN (48,
                                             50,
                                             51,
                                             52,
                                             53,
                                             59,
                                             61,
                                             62,
                                             63,
                                             67,
                                             73,
                                             74)
         GROUP BY num_msisdn)a ON a.num_msisdn = t.num_msisdn
      AND a.max_date = t.dat_operacao
      WHERE ref_date>=$startdate
      AND ref_date<=$finaldate;
       
      QUERY CONFIGURANDO NO XML: 
       
          <value><![CDATA[[
      INSERT
              overwrite TABLE fact.dw_f_rcrg_gems_rate_subsc t 
              (
                      a.num_msisdn,
                      a.max_date
              )
      (SELECT
          INNER JOIN
      SELECT      
              MAX(dat_operacao) AS max_date;
      FROM fact.dw_f_rcrg_gems_rate_subsc) a
         WHERE (ref_date)>='$startdate'
           AND ref_date<=$'finaldate'
           AND ide_plano_tarifario_atual IN (48,
                                             50,
                                             51,
                                             52,
                                             53,
                                             59,
                                             61,
                                             62,
                                             63,
                                             67,
                                             73,
                                             74)
         GROUP BY num_msisdn)a ON a.num_msisdn = t.num_msisdn
                  AND a.max_date = t.dat_operacao
      WHERE ref_date>='$startdate'
      AND ref_date<=$finaldate;]]>
      </value>
       
       
      Poderiam me ajudar por favor, sou estagiario na area e ainda estou aprendendo.
    • By Richard.Ribeiro
      Boa tarde a todos, Uma ajuda Por favor, alguém pode me explicar porque sempre que eu digito no" input name=vsat" e clico em buscar a DIV do " select id=rightValues" SOME
      alguem poderia ajudar? o erro está no  PHP ou JS
      desde já agradeço a atenção.
      <style media="screen">
      SELECT, INPUT[type="text"] {
        width:500px;
        box-sizing: border-box;
      }
      SELECT, INPUT[type="button"] {
        font-size: 20px;
      }
      SECTION {
        padding: 8px;
        background-color: #f0f0f0;
        overflow: auto;
      }
      SECTION > DIV {
        float: left;
        padding: 30px;
      }
      SECTION > DIV + DIV {
        width: 200px;
        text-align: center;
      }
      </style>
      <section class="container">
      <form  method="post">
        <?php
        if (isset($_POST['buscar'])) {
            $id_gmm = $_POST['gmm'];
          }elseif (isset($_POST['buscar2'])){
                $vsat = $_POST['vsat'];
            }
            ?>
      <h2><i class="fa fa-link"></i> Vincular Componentes a VSAT</h2>
      <h4><i class="fa fa-arrow-down"></i> Itens da GMM</h4>
          <div>
            <input type="text" name="gmm"  placeholder="Digite o N° da GMM">
            <input type="submit" name="buscar" value="buscar"><br>
              <select id="leftValues" size="5" multiple>
                <?php
                $consultaGmm = ConexaoBD::conectar()->prepare("SELECT tipo_material_id FROM itens_fornecidos WHERE gmm_id = $id_gmm ");
                $consultaGmm->execute();
                $consultaGmm = $consultaGmm->fetchAll();
                foreach ($consultaGmm as $key => $value) {
               ?>
              <option value="<?php echo  $value['tipo_material_id'];?>">
               <?php echo $value['tipo_material_id']; ?>
               </option>
            <?php }?>
            </select>
          </div>
          <div>
              <input type="button" id="btnLeft" value="&lt;&lt;" />
              <br>  <br>
              <input type="button" id="btnRight" value="&gt;&gt;" />
          </div>
          <div>
            <label for="">VSAT</label>
            <input type="text" name="vsat"  placeholder="Digite o ID/IDE da VSAT">
            <input type="submit" name="buscar2" value="buscar"><br>
              <select id="rightValues" size="4" multiple>
                <?php
                $consultaVsat = ConexaoBD::conectar()->prepare("SELECT estoque_material_id FROM componentes_instalados WHERE estoque_material_id = $vsat ");
                $consultaVsat->execute();
                $consultaVsat = $consultaVsat->fetchAll();
                foreach ($consultaVsat as $key => $valueVsat) {
               ?>
               <option value="<?php echo $valueVsat['estoque_material_id'];?>">
                 <?php echo $valueVsat['estoque_material_id']; ?>
               </option>
             <?php } ?>
              </select>
          </div>
      </form>
      </section>
      <script  src="<?php echo INCLUDE_PATH_PAINEL ?>js/jquery-3.4.1.min.js"></script>
      <script src="<?php echo INCLUDE_PATH_PAINEL ?>js/main.js"></script>
      <script type="text/javascript">
      $("#btnLeft").click(function () {
          var selectedItem = $("#rightValues option:selected");
          $("#leftValues").append(selectedItem);
      });
      $("#btnRight").click(function () {
          var selectedItem = $("#leftValues option:selected");
          $("#rightValues").append(selectedItem);
      });
       
      </script>
      <?php die(); ?>
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.