Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Douglas Fernandess

[Resolvido] SELECT GROUP BY contar e mostrar valores

Recommended Posts

Tenta assim

 

$agendamentos = mysql_query("SELECT SUM(GSM) as A, 
                                   SUM(3_G) as B, 
                                   SUM(ADSL) as C, 
                                   SUM(Fechamento) as D
                            FROM agendamentos
                            GROUP BY Fechamento") or die(mysql_error());

 

 

você tera que exibir A, B, C, D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz dessa maneira,

 

SQL

 

CREATE TABLE IF NOT EXISTS `agendamentos` (
 `Codigo` int(11) NOT NULL AUTO_INCREMENT,
 `Data_Contato` date DEFAULT NULL,
 `Data_Visita` date DEFAULT NULL,
 `Horario` varchar(20) DEFAULT NULL,
 `Contato` varchar(100) DEFAULT NULL,
 `Cod_Tele` int(11) DEFAULT NULL,
 `Cod_Cliente` int(11) DEFAULT NULL,
 `Telefone` varchar(50) DEFAULT NULL,
 `Celular` varchar(50) DEFAULT NULL,
 `Email` varchar(50) DEFAULT NULL,
 `Cod_Vendedor` int(11) DEFAULT NULL,
 `Cod_Supervisor` int(11) DEFAULT NULL,
 `Ponto_Referencia` varchar(255) DEFAULT NULL,
 `OBS` text,
 `GSM` varchar(255) DEFAULT NULL,
 `3_G` varchar(255) DEFAULT NULL,
 `FIXA` varchar(255) DEFAULT NULL,
 `ADSL` varchar(255) DEFAULT NULL,
 `Fechamento` varchar(255) DEFAULT NULL,
 `Data_Visita_Realizada` date DEFAULT NULL,
 `Previsao` date DEFAULT NULL,
 PRIMARY KEY (`Codigo`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=298 ;

--
-- Extraindo dados da tabela `agendamentos`
--

INSERT INTO `agendamentos` (`Codigo`, `Data_Contato`, `Data_Visita`, `Horario`, `Contato`, `Cod_Tele`, `Cod_Cliente`, `Telefone`, `Celular`, `Email`, `Cod_Vendedor`, `Cod_Supervisor`, `Ponto_Referencia`, `OBS`, `GSM`, `3_G`, `FIXA`, `ADSL`, `Fechamento`, `Data_Visita_Realizada`, `Previsao`) VALUES
(43, '2012-08-14', '2012-08-15', '08:00', 'MOACIR', 40, 2158, NULL, '', 'email@hotmail.com', 43, 8, NULL, NULL, '6', '', '', '', '100', '2012-08-21', NULL),
(44, '2012-08-14', '2012-08-15', '09:00', 'joarez', 44, 14553, NULL, '', 'email@hotmail.com', 43, 8, NULL, NULL, '', '', '', '', '0', '2012-08-21', '2012-09-22'),
(45, '2012-08-14', '2012-08-15', '09:00', 'carlos / bruna', 45, 14554, NULL, NULL, 'email@hotmail.com', 43, 8, NULL, NULL, '', '', '', '', '0', '2012-08-21', '2012-10-23'),
(46, '2012-08-14', '2012-08-15', '14:00', 'LUSANE', 44, 3938, NULL, '', 'email@hotmail.com', 43, 8, NULL, NULL, '3', '', '1', '1', '50', '2012-08-21', '2012-09-05'),
(48, '2012-08-14', '2012-08-15', '14:30', 'Caroline', 40, 14556, NULL, '', 'email@hotmail.com', 43, 8, NULL, NULL, '5', '', '1', '1', '25', '2012-08-17', NULL);

 

$agendamentos = mysql_query("SELECT SUM(GSM) as A, 
                                   SUM(3_G) as B, 
                                   SUM(ADSL) as C, 
                                   SUM(Fechamento) as D
                            FROM agendamentos
                            GROUP BY Fechamento") or die(mysql_error());



if(mysql_num_rows($agendamentos) <= '0'){

 echo "<div class=\"no\">Erro ao selecionar!</div>";

}else{

   while($res_agendamentos=mysql_fetch_array($agendamentos)){


?>
<table>

     <tr>
       <td height="20" style="text-align:center;"> <?php echo $Fechamento; ?></td>
       <td height="20"> <?php echo $A; ?></td>
       <td height="20"> <?php echo $B; ?></td>
       <td height="20"> <?php echo $C; ?></td>
       <td height="20"> <?php echo $D; ?></td>


     </tr>

<?php } } ?>

	<tr>



   </table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ja tento

SELECT SUM(GSM), SUM(3_G), SUM(ADSL), SUM(Fechamento) FROM agendamentos

pq sum e uma função agregada não prescisa agrupar :S

 

você prescisaria um group by se você fosse lista o nome de um campo não agregado tipo

 

SELECT nome, SUM(GSM), SUM(3_G), SUM(ADSL), SUM(Fechamento) FROM agendamentos
Group By nome

 

e outra se na nomeclatura do campo tiver as letra maiusculas ex:ADSL

 

tem que fazer assim

SELECT SUM("GSM"), SUM("3_G"), SUM("ADSL"), SUM("Fechamento") FROM agendamentos

Compartilhar este post


Link para o post
Compartilhar em outros sites

como eu falei você ta usando mysql? ou postgre, eos campos tem letras maiusculas?

tente executar so o select no phpmyadmin e diga qual erro mostra

Compartilhar este post


Link para o post
Compartilhar em outros sites

mysql fiz assim e mostro a soma correta e completa. Como eu mostraria por fechamento dai? ex: tenho os seguintes tipos de fechamento 0, 25, 50, 75, 100. E como eu mostraria os resultados?

 

SELECT SUM(GSM), SUM(3_G), SUM(ADSL) FROM agendamentos GROUP BY Fechamento

 

 

 

Separei por fechamento mostrando a soma de cada uma delas assim só que nao fico em ordem crescente

 

SELECT Fechamento, SUM(GSM), SUM(3_G), SUM(ADSL) FROM agendamentos GROUP BY Fechamento ORDER BY Fechamento ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu olhei sua estrutura do banco.

ta errada tb. os campos tem que ser int ou numeric(caso tenha decimal).

 

campo GSM,3_G,ADSL so tem valores inteiros ou decimal certo.

fechamento tb?

 

se ta somando certo oq você quer fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara é o seguinte

 

O select está certo, pois ele está te retornando a soma por fechamento da forma que foi feito o select.

 

Agora se o seu problema está sendo exibir esses registros tenta assim:

 

$agendamentos = mysql_query("SELECT SUM(GSM) as A, 
                                   SUM(3_G) as B, 
                                   SUM(ADSL) as C, 
                                   SUM(Fechamento) as D
                            FROM agendamentos
                            GROUP BY Fechamento") or die(mysql_error());



if(mysql_num_rows($agendamentos) <= '0'){

 echo "<div class=\"no\">Erro ao selecionar!</div>";

}else{

   while($res_agendamentos=mysql_fetch_array($agendamentos)){

   //mudei a forma de trazer os dados olha dentro dos tds.
?>
<table>

     <tr>
       <td height="20" style="text-align:center;"> <?php echo $Fechamento; ?></td>
       <td height="20"> <?php echo $res_agendamentos['A']; ?></td>
       <td height="20"> <?php echo $res_agendamentos['B']; ?></td>
       <td height="20"> <?php echo $res_agendamentos['C']; ?></td>
       <td height="20"> <?php echo $res_agendamentos['D']; ?></td>        
     </tr>

<?php } } ?>

               <tr>



   </table>

 

 

ve se é isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim erro meu, mudei pra INT os valores. Ta somando correto também, eu queria somar os valores e mostrar por grupo por Fechamento numa tabela. Como eu mostro esses valores dai? porque no phpmyadmin tu coloca o SELECT ele mostra mais dai como eu do echo ?

 

 

Fechamento de 0 tantos GSM = 0, FIXO = 5 ....

Fechamento de 25 tantos GSM = 15, FIXO = 7 ....

 

e assim por diante ate 100

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não to sei oq você que fazer :s

 

qual select deu certo?

esse?

 

SELECT SUM(GSM), SUM(3_G), SUM(ADSL) FROM agendamentos

 

agora entedie

para exibir e so você colocar alias nos campos

SELECT Fechamento ,SUM(GSM) GSM, SUM(3_G) 3_G, SUM(ADSL) ADSL FROM agendamentos GROUP BY Fechamento ORDER BY Fechamento ASC

 

ta resolvido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Zezinho fiz assim

 

SELECT Fechamento as F, SUM(GSM) as A, 
                                   SUM(3_G) as B, 
                                   SUM(ADSL) as C, 
                                   SUM(Fechamento) as D
                            FROM agendamentos WHERE Fechamento IS NOT NULL
                            GROUP BY Fechamento ORDER BY Fechamento ASC

 

E deu certo.

 

Erison sua maneira tbm tava correta vlw ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

EU SEI, e pq no mysql não prescisa do as (ele funciona com e sem "as"), so no postgre que prescisa.

 

Topico Resolvido

Compartilhar este post


Link para o post
Compartilhar em outros sites

E como eu faria para soma os valores de cada coluna em mais uma <tr>?

 

<tr style="background:#f4f4f4;">
	<td style="text-align:center">Total</td>
	<td><?php echo SUM($res_agendamentos['A']); ?></td>
	<td><?php echo $res_agendamentos['B']; ?></td>
	<td><?php echo $res_agendamentos['C']; ?></td>
	<td><?php echo $res_agendamentos['D']; ?></td>
</tr>	

 

Queria pega o total de cada coluna, como eu teria que fazer?

 

tab1.JPG

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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