Jump to content
Pedro Batista Lopes

Criar um campo soma

Recommended Posts

Estou com o problemas com uma query em mysql, fiz duas uma cliente outra usuário juntei as duas, 

Mais eu queria fazer mais um campo que contasse a quantidade de notas que tem para cada cliente.

vou enviar a query.

select DISTINCT 
cli.nome, nf.numero_nf,
nf.data_em,
nf.valor 
from cliente cli
join nota_fiscal nf
on cli.id = nf.id_cliente
WHERE nf.data_em >= "2019-01-01" and nf.data_em <= "2019-01-30"

Gostaria que não repetisse os usuários e contasse quantas vezes eles aparecem . 

segue anexo imagem como sai assim

 

Capturar.PNG

Share this post


Link to post
Share on other sites

Segue exemplo:

 

DADOS UTILIZADOS:

CREATE TABLE cliente (
	id INT NOT NULL AUTO_INCREMENT,
	nome VARCHAR(50) NOT NULL,
	PRIMARY KEY(id)
);
INSERT INTO cliente (nome) VALUES
('Pedro'),
('Paulo'),
('Fernando'),
('Silva'),
('Luiz'),
('Jaque');

CREATE TABLE nota_fiscal (
	id INT NOT NULL AUTO_INCREMENT,
	id_cliente INT NOT NULL,
	numero_nf INT(3) NOT NULL,
	data_em DATE NOT NULL,
	valor DECIMAL(6,2) NOT NULL,
	PRIMARY KEY(id)
);
INSERT INTO nota_fiscal (id_cliente, numero_nf, data_em, valor) VALUES
(1, 200, '2019-01-03', '200'),
(2, 201, '2019-01-05', '300'),
(3, 203, '2019-01-06', '700'),
(4, 203, '2019-01-07', '700'),
(1, 203, '2019-01-09', '900'),
(4, 203, '2019-01-12', '700'),
(5, 203, '2019-01-15', '500'),
(3, 203, '2019-01-17', '700'),
(5, 203, '2019-01-19', '900'),
(3, 203, '2019-01-20', '500'),
(6, 203, '2019-01-22', '500'),
(4, 203, '2019-01-28', '523');


SQL
 

SELECT DISTINCT 
	cli.nome,
	nf.numero_nf,
	nf.data_em,
	COUNT(nf.id_cliente) 'apareceuXvezes',
	SUM(nf.valor) 'valorSomado'
FROM
	cliente cli
JOIN
	nota_fiscal nf
ON
	cli.id = nf.id_cliente
WHERE
	nf.data_em >= "2019-01-01" AND
	nf.data_em <= "2019-01-30"
GROUP BY
	nf.id_cliente


RESULTADO
 
image.png.5a3ed6eac77a7e8a70fcdf5303209673.png

 

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 lucianfpaula
      Galera tenha a seguinte duvida, tenho 3 tabelas onde estou trazendo os dados e preciso fazer um count em uma delas
       
      SELECT *  FROM tabela1 AS t1  INNER JOIN tabela2 AS t2 ON t1.idt1 = t2.idt2 INNER JOIN tabela3 AS t3 ON t3.idt3 = t1.idt1  
      a duvida é: quero manter o SELECT * mas também preciso de COUNT(t3.idT3)
      não sei se é possível fazer isso, mas gostaria de ter certeza antes de focar em outra solução
      desde já muito grato.
    • By lezão
      Boa noite!
      Td bem com vcs?
      Estou usando esse código mas não retorna nada!
       
      Alguém pode me ajudar ?
       
       
      <?php $sql = mysqli_query($link, "SELECT ver_post, COUNT(ver_post) AS Quantidade FROM tab_comentarios where ver_post = 'red' Group by ver_post"); ?> Variável
      <?php echo $Quantidade; ?>  
    • By neto_celino
      Estou usando o seguinte código para somar um SELECT, mas cheguei em um determinado ponto que travei.
       
      Tenho 400 registros na DB e tenho que somar alguns registros somente. Ou seja, somar o (valortotal) de alguns ID's somente. 
      É possivel e por onde vou ? rs.
      <?php $subtotal = "SELECT SUM(valortotal) from tbl_compras WHERE id = VariosIdAqui"; $resultado = mysql_query($subtotal); $registro = mysql_fetch_row($resultado); echo number_format($registro[0], 2, ',', ' ') ;  ?>      
    • By Giovanird
      Olá amigos!
      Tenha a seguinte estrutura no banco MySQL
      COD   |   PONTOX  |  PONTOY  |  ATLETAX       |  ATLETAY
      1         |   0               |  1               |  Maria              |  João
      2         |   2               |  0               |  João               |  Maria
      3         |   0               |  2               |  Maria              |  João
      4         |   7               |  5               |  Maria              |  João
      5         |   0               |  3               |  João               |  Maria
      6         |   2               |  1               |  João               |  Maria
      7         |   0               |  6               |  Maria              |  João
      8         |   4               |  0               |  João               |  Maria
       
      Preciso de ajuda para somar quantos pontos fez o atleta João nos últimos 5 torneios (COD 8, 7, 6, 5 e 4)  Há momento que o João jogou em X e outro momento em Y.
      Abaixo segue meu Select, onde a soma dos pontos deve ser 17.
       
      nomeatleta = "João"
      Set soma= banco.execute("SELECT sum(PONTOX ) AS somax,  sum(PONTOY ) AS somay FROM (select cod, pontox, pontoy, atletax, atletay  from torneios where (atletax like '"&nomeatleta&"' or atletay like '"&nomeatleta&"') order by cod desc limit 5) AS temp")
       
    • By marsolim
      galera tô tentando fazer uma classificação aqui junto com um sum e não to conseguindo. até o momento consigo gerar a tabela de desempenho assim
       
         $sql = "SELECT *,SUM(pontos_total) AS totais FROM desempenho INNER JOIN usuarios ON usuarios.id = desempenho.id_usuario GROUP BY id_usuario ORDER BY totais DESC";     if($res = mysqli_query($con, $sql)){         while($row = mysqli_fetch_assoc($res)){             echo $row["nome"] . " - " . $row["totais"] . "<br>";         }     }  
      ok isso me gera uma tabela como segue
       
      jean claude van damme - 152
      bruna marquezine - 149
      bruce willis - 131
      ...
       
      o que não to conseguindo é incluir um contagem pra saber em que posição a pessoa está por exemplo se a bruna marquezine logar no sistema deve aparecer pra ela
       
      Sua pontuação: 149
      Sua posição: 2
       
      to tentando incluir uma clausula pra contar os totais maiores ou iguais ao do usuário logado e assim a quantidade de registros que retornar é a posição da pessoa.
       
      detalhe pertinente: totais é uma soma de vários subtotais espalhados pela tabela em nome de cada usuario tipo
       
      nesse cenario temos como soma dos pontos totais
       
      1 - 8
      2 - 13
      3 - 3
      4 - 7
      5 - 2
       
      alguma ideia de como posso pegar a posição apenas alterando o sql?
×

Important Information

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