Somar valores linha
16/04/2023
0
Eliton Silva
Post mais votado
17/04/2023
O tipo TEXT serve para armazenar textos grandes, geralmente de até 2 GB e, portanto, não é indexável e não vai aceitar a constraint de PK ou Unique, que garantiria a unicidade do vendedor.
Neste caso, trata-se de um modelo hipotético para exercitar o aprendizado, onde após inserir os dados de vários vendedores, você precisa atualizar as colunas TotalTri e AtingiuMeta.
A característica de "vendedores únicos" aqui, estou interpretando como sendo uma constraint que impede que múltiplas linhas sejam inseridas para o mesmo vendedor, o que poderia implicar uma inconsistência com valores distintos entre eles. Então, se não há múltiplas linhas por vendedor, não há necessidade de uso de funções de agregação.
Basta um update, mais ou menos assim:
update `Super7`.`Vendas` set `TotalTri` = `Jan`+`Fev`+`Mar`, `AtingiuMeta` = case when (`Jan`+`Fev`+`Mar`)>=`Meta` then 'sim' else 'não' end;
Arthur Heinrich
Mais Posts
16/04/2023
Frank Hosaka
tbvenda
id
idvendedor
data
venda
Para ver a venda de cada mês, de cada vendedor, a consulta seria assim:
select sum(venda),idvendedor,month(data) from tbvenda where data>'2022-12-31' group by idvendedor
Para ver a venda de cada vendedor no ano de 2023, a consulta seria assim:
select sum(venda),idvendedor from tbvenda where data>'2022-12-31' group by idvendedor
Para ver tudo isso de uma vez, aí seria necessário um view, assim:
CREATE VIEW vw_venda AS SELECT id_vendedor, SUM(IF((MONTH(data) = 1),venda,0)) as jan, SUM(IF((MONTH(data) = 2),venda,0)) as fev, SUM(IF((MONTH(data) = 3),venda,0)) as mar, SUM(IF((MONTH(data) = 4),venda,0)) as abr, SUM(IF((MONTH(data) = 5),venda,0)) as mai, SUM(IF((MONTH(data) = 6),venda,0)) as jun, SUM(IF((MONTH(data) = 7),venda,0)) as jul, SUM(IF((MONTH(data) = 8),venda,0)) as ago, SUM(IF((MONTH(data) = 9),venda,0)) as "set", SUM(IF((MONTH(data) = 10),venda,0)) as "out", SUM(IF((MONTH(data) = 11),venda,0)) as nov, SUM(IF((MONTH(data) = 12),venda,0)) as dez, SUM(venda) AS `2023` FROM vendas where data > '2022-12-31' GROUP BY id_vendedor
17/04/2023
Eliton Silva
Desculpe não ter colocado a tabela, segue abaixo.
CREATE TABLE `Super7`.`Vendas` ( `Vendedor` TEXT NOT NULL , `Jan` INT , `Fev` INT , `Mar` INT , `TotalTri` INT , `Meta` INT , `AtingiuMeta` TEXT ) ENGINE = InnoDB; INSERT INTO `Vendas` (`Vendedor`, `Jan`, `Fev`, `Mar`, `TotalTri`, `Meta`, `AtingiuMeta`) VALUES ('Jose', '1000', '100', '200', '0', '1000', ''), ('Pedro', '100', '100', '300', '0', '1000', '')
Eu preciso somar os valores que Jose vendeu e colocar em "TotralTri", depois comparar com a "Meta" e colocar sim ou não em "AtingiuMeta".
Obrigado pela ajuda.
tbvenda
id
idvendedor
data
venda
Para ver a venda de cada mês, de cada vendedor, a consulta seria assim:
select sum(venda),idvendedor,month(data) from tbvenda where data>'2022-12-31' group by idvendedor
Para ver a venda de cada vendedor no ano de 2023, a consulta seria assim:
select sum(venda),idvendedor from tbvenda where data>'2022-12-31' group by idvendedor
Para ver tudo isso de uma vez, aí seria necessário um view, assim:
CREATE VIEW vw_venda AS SELECT id_vendedor, SUM(IF((MONTH(data) = 1),venda,0)) as jan, SUM(IF((MONTH(data) = 2),venda,0)) as fev, SUM(IF((MONTH(data) = 3),venda,0)) as mar, SUM(IF((MONTH(data) = 4),venda,0)) as abr, SUM(IF((MONTH(data) = 5),venda,0)) as mai, SUM(IF((MONTH(data) = 6),venda,0)) as jun, SUM(IF((MONTH(data) = 7),venda,0)) as jul, SUM(IF((MONTH(data) = 8),venda,0)) as ago, SUM(IF((MONTH(data) = 9),venda,0)) as "set", SUM(IF((MONTH(data) = 10),venda,0)) as "out", SUM(IF((MONTH(data) = 11),venda,0)) as nov, SUM(IF((MONTH(data) = 12),venda,0)) as dez, SUM(venda) AS `2023` FROM vendas where data > '2022-12-31' GROUP BY id_vendedor
17/04/2023
Frank Hosaka
Cada tabela tem que representar uma informação do mundo real.
Maria vendeu 10,00 em janeiro de 2023.
João vendeu 20,00 em janeiro de 2023.
Pedro vendeu 12,00 em janeiro de 2023.
Para incluir essas informações, o comando é esse:
insert into vendas vendedor, data, venda values (''Maria'',''2023-01-31'',10.00),(''João'',''2023-01-31'',20.00),(''Pedro'',''2023-01-31'',12.00).
Aqui eu tenho um campo para vendedor, outro campo para data e outra para venda.
Para saber o que a Maria vendeu em 2023, você usa uma consulta assim:
select sum(venda) from venda where vendedor = ''Maria''
Para saber o que a Maria vendeu por mês em 2023, você usa outra consulta assim:
select month(data), sum(venda) from venda where vendedor=''Maria''
Para saber o que os vendedores venderam por mês em 2023, você usa outra consulta assim:
select month(data),sum(venda) from venda group by vendedor.
Ou seja, você precisa separar a tabela (a fonte da informação) da consulta (como você apresenta a informação).
Clique aqui para fazer login e interagir na Comunidade :)