Ir para conteúdo
manoaj

Adiquirir nota media

Recommended Posts

Boa tarde pessoal.

Estou com o seguinte problema.

 

Tenho um sistema de avaliacoes de casas, onde cada pessoa faz uma avaliação com base em 6 critérios e pra cada critério e dada uma nota de 1 a 10 e dessa nota eu consigo uma media com base na soma das notas e depois dividindo por 6.

exemplo (6+4+3+5+8+5 = 31 / 6 = 5.1 de media)

ate ai tudo bem, o problema e que tenho q pegar todas as avaliacoes dos usuários e lançar uma media geral semelhante a avaliação acima, porem se eu somar todas as avaliacoes eu vou ter um resultado de mais de dois dígitos de media.

exemplo (520 / 6 = 86.6)

Eu preciso de uma media de dois dígitos mesmo somando todas as avaliacoes.

alguém sabe como resolvo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Divida pela quantidade de notas que você somou para chegar no resultado provavelmente deve ser algo como (QTD_PESSOAS * 6).

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi sua explicação cada pessoa dá uma nota para cada critério, são 6 critérios então são 6 notas por pessoa, logo para 3 pessoas existem 18 notas.

 

Caso tenha dúvidas o calculo da média simples é SOMA_DOS_VALORES / QUANTIDADE_DE_VALORES.

 

A tabela abaixo mostra o cálculo e até algumas variações que você pode aplicar se já possuir alguma outra média calculada.

PESSOA     |NOTA_1|NOTA_2|NOTA_3|NOTA_4|NOTA_5|NOTA_6|SOMA |MEDIA          |MEDIA_GERAL
HwapX      |    10|     8|     8|     7|     5|     9|   47|(47/6)=    7,83|
manoaj     |     9|     9|     9|     7|     8|    10|   52|(52/6)=    8,66|
imasters   |     7|     8|     8|     9|     6|    10|   48|(48/6)=    8,00|
===========================================================================|
                                                           |          24,49|(24,49/3)=8,16
SOMA GERAL |    26|    25|    25|    23|    19|    19|  147|               |(147/18) =8,16
MEDIA NOTA |  8,66|  8,33|  8,33|  7,66|  6,33|  9,66|48,97|               |(48,97/6)=8,16

Um exemplo via SQL em um banco com uma estrutura de tabela acima seria:

SELECT SUM(NOTA_1 + NOTA_2 + NOTA_3 + NOTA_4 + NOTA_5 + NOTA_6) / (COUNT(*) * 6) FROM tabela;

No PHP você poderia fazer algo como.

<?php
$notas = [
  'HwapX'    => [10, 8, 8, 7, 5,  9],
  'manoaj'   => [9, 9, 9, 7, 8, 10],
  'imasters' => [7, 8, 8, 9, 6, 10]
];

/*Média*/
$media = array_reduce($notas, function($total, $por_pessoa) {
    return $total + array_sum($por_pessoa);
}, 0) / (count($notas) * 6);
//equivalente a
/*
$total = 0;
foreach($notas as $por_pessoa) {
    $total += array_sum($por_pessoa);
}
$media = $total / (count($notas) * 6);
*/
echo "Média=$media\n";

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por LuanMartinsTI
      Tenho o seguinte problema, eu preciso dar um select em duas tabelas, ou ter dois selects tanto faz, eu fiz com inner join e com union all mas nao consigo ter o resultado que eu desejo
      O problema é o seguinte> Pra saber quantos usuarios eu tenho em cada grupo eu preciso dar um select na membros grupo com o id do grupo, mas eu preciso mostrar apenas os 5 primeiros grupos com mais gente, eu nao tenho na tabela falando grupo 1 tem 50 membros, eu tenho 50 linhas com grupo 1 e id do usuario, como eu transformo isso no que eu quero? a unica forma q eu pensei é criar um campo novo em grupos e colocar la o resultado de rowCount, mas gostaria de saber se é possivel fazer sem, eu ja consigo mostrar quantos usuarios cada grupo tem, eu nao consigo mostrar é em ordem e nao é so dar o asc o problema é na logica provavelmente, mas se for possivel resolver isso com uma unica query ficarei grato
      tabela 1
      grupos( id nome dono created stat ) tabela 2
      membros_grupo( id grupo_id user_id )  
      PHP
      public function ultimosGrupos($limite){ try { $query = "SELECT * FROM groups ORDER BY id ASC LIMIT :limite"; $this->Select = $this->Conn->prepare($query); $this->Select->bindParam(':limite' , $limite, PDO::PARAM_INT); $this->Select->execute(); if($this->Select->rowCount() > 0){ return $this->Select->fetchAll(PDO::FETCH_ASSOC); }else{ return FALSE; } } catch (PDOException $exc) { exibeMensagens("Erro ao consultar. {$exc->getMessage()}", WS_ERROR); } } public function users_por_grupo($id){ try { $query = "SELECT * FROM group_memberships WHERE group_id = :id"; $this->Select = $this->Conn->prepare($query); $this->Select->bindParam(':id' , $id, PDO::PARAM_INT); $this->Select->execute(); return $this->Select->rowCount(); } catch (PDOException $exc) { exibeMensagens("Erro ao consultar. {$exc->getMessage()}", WS_ERROR); } }  
    • Por Robson Augusto
      Galera se alguém souber o que ocorre,  é o seguinte, não acredito que possa ser Problema de SEO, mas vamos lá meu site anuncicarbh.com, não aparece em pesquisa feitas pelo computador, com a palavra chave "seminovos bh", ele aparece na primeira oscilando para segunda pagina do bing e yahoo, fazendo a pesquisa pelo telefone, ja no pc ele nao aparace mais no yahoo, mas continua a aparecer no bing, ja no google ele teve pequenas aparições na terceira página, agora em ambas as pesquisas de pc e celular ja não aparece mais no google... So aparece atualmente no google, pesquisando pelo nome do site... Alguem saberia me dizer o por que disso? será SEO?
    • Por martinazzo
      Olá pessoal,
       
      sou novo por aqui e não sei bem como funciona, mas sei que preciso de uma ajuda kkkkk
      se puderem me dar uma mão ficaria grato;
       
      Estou tendo problemas em como pegar id de uma linha clicada em uma table, que já recebe os dados de um bd. Eu gostaria de poder editar os campos e salvar no banco de dados usando o ID da linha clicada;
       
      Vou colar o código abaixo, não reparem na bagunça kkkkk
       
      conexao.php
       
      <?php
      $server = "XXXXX";         Conferido e esta correto;
      $username = "XXXXX";  Conferido e esta correto;
      $password = "XXXXX";  Conferido e esta correto;
      $dbname = "XXXXX";     Conferido e esta correto;
      $conn = mysqli_connect($server, $username, $password, $dbname);
      ?>
       
      altera.php
       
      <?php 
      $link = mysqli_connect("XXXXXX", "XXXXX", "XXXXX", "XXXXXX"); Conferido
      $sql = "SELECT * FROM interface ";
      $consulta = mysqli_query($link, $sql);
      ?>
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <meta http-equiv="refresh" content="30">
      <link rel="stylesheet" type="text/css" href="style.css">
      <script src="sorttable.js"></script>
      <title>Dashboard</title>
      <?php 
      session_start();
      if(!isset($_SESSION['login']) and !isset ($_SESSION['senha'])){
          session_destroy();
        unset($_SESSION['login']);
        unset($_SESSION['senha']);
        header('location:index.html');
        
        }
        
      ?>

      </head>
      <body>
      <a href="index.php"><img src="img/ditec_smart_hor_150px.png"></a>
      <div class="borda_titulo">
      <h2><center>DIMILK | Equipamentos</font></h2></center></div><br /><br />
      <form name="equipamento" action="salva.php" method=post>
      <center><table id="minhaTabela" border="3" class="sortable" bgcolor="#1E90FF">
        <tr>
        <th><center>ID </center></th>
        <th><center>MAC</center></th>
        <th><center>Habilitado</center></th>
        <th><center>Descrição</center></th>
        <th><center>Altura Tarro</center></th>
        <th><center>Área Tarro</center></th>
        <th><center>Alterar</center></th>
        </tr>
        
          <?php while($registro = mysqli_fetch_assoc($consulta)){
              echo '<tr bgcolor="#ADD8E6" scope="row">';
              echo '<td name="id"><center>'.$registro["id"].'</center></td>';
              echo '<td name="mac"><center>'.$registro["mac"].'</center></td>';
              echo '<td><center><input type="checkbox" name="status" value="$teste"><br></center></td>';
              echo '<td id="linha_desc"><textarea name="desc" type=text placeholder="'.$registro["descricao"].'" /></textarea></td>';
              echo '<td><input name="altura" type=text style="width: 70px;" placeholder="'.$registro["altura_latao"].' cm" /></td>';
              echo '<td><input name="area" type=text style="width: 70px;" placeholder="'.$registro["area_latao"].' cm" /></td>';
              
              echo '<td><form method="get" action="salva.php"><center><button class="voltar" type="submit">Salvar</button></center></form><br />';
              echo '</tr>';
              }
          echo '</tbody></table></form>';
          
          ?></center><br />
          
              <div>            
                  <form method="get" action="index.html">        
                  <center><button class="voltar" type="submit">Voltar</button></center></form>
              </div>
                      
                      <br />
                      <footer class="borda_texto"><center>
                      <img src="img/rodape_logo.png">
                          2019 © <b>DITEC - Smart Solutions</b> - Todos os Direitos Reservados.
                      <a class="px-4" href="https://www.ditecsc.com.br" target="_blank">Ditec - Smart Solution</a>
                      </center></footer>
      </body>
      </html>
       
      salva.php
       
      <?php
      include('conexao.php');
      include_once('altera.php');
       
      // declaração de variáveis
      $id = 22;
      /*$id = $_GET['id'];
      $status = $_POST['status'];*/
      $descricao = $_POST['desc'];
      $altura = $_POST['altura'];
      $area = $_POST['area'];
       
      $up = mysqli_query($conn, "UPDATE interface SET descricao='$descricao', altura_latao='$altura', area_latao='$area' WHERE id=$id"); 
       
      if(mysqli_affected_rows($conn) > 0){
        echo '<center><h1><b>Sucesso</b></h1><br /> <h2>Atualizado!</h2></center>';
        header("Refresh: 2;url=equipamentos.php");
      }else{
          echo '<center><h1><b>Erro</b></h1><br /> <h2>Não foi atualizado!</h2></center>';
        header("Refresh: 2;url=altera.php");
      }
       
      mysqli_close($conn);
      ?>
       
      Do jeito que esta eu consigo alterar o id=22, mas não consegui pegar o id da linha sequente;
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.