Ir para conteúdo
MrPhantomRed

Listar o produto mais vendido por dia no BD de uma loja (mostrar a descrição, o tipo e o dia tbm).

Recommended Posts

Olá, preciso de ajuda com um SELECT.

Preciso realizar o que está escrito no enunciado abaixo:

Listar o produto mais vendido por dia na loja (mostre a descrição, o tipo e o dia);

Até onde cheguei:

mysql> SELECT Data, MAX(QtdVenda) as Vezes_Que_Foi_Vendido, IDProduto, Fabricante, tipo, nome from vendas INNER JOIN produtos on QtdVenda=(Select Max(QtdVenda) from vendas order by data) where produtos.ID = vendas.IDProduto group by data order by data;

Saída:

+------------+-----------------------+-----------+------------+------------+------+
| Data       | Vezes_Que_Foi_Vendido | IDProduto | Fabricante | tipo       | nome |
+------------+-----------------------+-----------+------------+------------+------+
| 2017-07-08 |                    10 |        15 | SAMSUNG    | Smartphone | S9   |
+------------+-----------------------+-----------+------------+------------+------+

Estrutura das minhas tabelas:

 

mysql> select * from produtos;
+------+------------------------+------------+------------+------------+------------+
| ID   | Nome                   | Fabricante | Quantidade | VlUnitario | Tipo       |
+------+------------------------+------------+------------+------------+------------+
|    1 | Playstation 3          | Sony       |        100 |       2000 | Console    |
|    2 | Core 2 Duo 4GB RAM 500 | DELL       |        200 |       1900 | Notebook   |
|    3 | XBOX 360 120 GB        | Microsoft  |        350 |       1300 | Console    |
|    4 | GT-1620 QUAD BAND      | SAMSUNG    |        300 |        500 | Celular    |
|    5 | iPHONE 4 32 MB         | Apple      |         50 |       1500 | Smartphone |
|    6 | Playstation 2          | Sony       |        100 |        400 | Console    |
|    7 | Wii 120 MB             | Nintendo   |        250 |       1000 | Console    |
|    8 | S7                     | SAMSUNG    |        100 |       1500 | Smartphone |
|    9 | J7                     | SAMSUNG    |        300 |       1000 | Smartphone |
|   10 | iPHONE 5 32 MB         | Apple      |        150 |       2000 | Smartphone |
|   11 | Core 2 Duo 8 GB        | DELL       |        100 |       2500 | Notebook   |
|   12 | Playstation 4          | Sony       |        250 |       2500 | Console    |
|   13 | Notebook               | DELL       |        200 |       3000 | Notebook   |
|   14 | Ultrabook              | DELL       |        100 |       5500 | Ultrabook  |
|   15 | S9                     | SAMSUNG    |        300 |       2500 | Smartphone |
+------+------------------------+------------+------------+------------+------------+
15 rows in set (0.05 sec)

mysql> select * from vendas;
+---------+------------+----------------+-----------+----------+----------+
| IDVenda | Data       | Cliente        | IDProduto | QtdVenda | Desconto |
+---------+------------+----------------+-----------+----------+----------+
|       1 | 2017-07-08 | Carlos Santana |        15 |       10 |       50 |
|       2 | 2017-07-09 | Ana Maria Melo |         7 |        1 |      100 |
|       3 | 2017-07-09 | Fernando Silva |         8 |        1 |       70 |
|       4 | 2017-07-09 | Fernando Souza |        13 |        2 |      150 |
|       5 | 2017-07-10 | Luis Gama      |         3 |        1 |       50 |
|       6 | 2017-07-10 | Arthur Filho   |         7 |        2 |      100 |
|       7 | 2017-07-10 | Fernando Silva |        12 |        1 |       50 |
|       8 | 2017-07-10 | Fernando Souza |        15 |        3 |      200 |
|       9 | 2017-07-12 | Ana Maria Melo |         1 |        3 |      200 |
|      10 | 2017-07-13 | Cassio Moreira |         5 |        1 |       50 |
+---------+------------+----------------+-----------+----------+----------+
10 rows in set (0.02 sec)

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 M. Alberto
      O que preciso alterar para acessar meu banco de dados remotamente?
       
      Tenho o IP e outros dados... como faço com este código?
       
      <?php $link = mysql_connect('localhost', 'USUARIO_NOME', 'SENHA_ACESSO'); if (!$link) { die('Não conseguiu conectar: ' . mysql_error()); } $db_selected = mysql_select_db('BANCODEDADOS_NOME', $link); if (!$db_selected) { die ('Não pode selecionar o banco : ' . mysql_error()); } $rst_pedidos=mysql_query("SELECT * FROM pedidosgarotao WHERE impresso='nao' ORDER BY id",$link); $num_pedidos=mysql_num_rows($rst_pedidos); if ($num_pedidos==0) { ?>  
    • Por M. Alberto
      Estou realizando a migração de meu site que utiliza um banco de dados em mySQL PHP porém estou obtendo erro.
       
      Criei o banco de dados e fiz upload dos arquivos, porém agora neste servidor não roda de maneira alguma. Alguém poderia me ajudar ?
    • Por netocazuza
      Tenho uma rotina em php que está funcionando, gravando os dados numa tabela. Agora surgiu a necessidade de fazer dois testes antes da gravação, e eu não estou conseguindo ter idéia de como fazer, por isso vou postar no próprio código pra ver se entendem. O primeiro teste, é ver se o número escolhido, já foi selecionado (variável numero), e caso isso ocorra, não gravar. O outro teste é impedir que o mesmo usuário (usuário apostador)faça mais de uma aposta. Segue código:
      <?php require_once 'init.php'; // pega os dados do formuário $data_hora = isset($_POST['data_hora']) ? $_POST['data_hora'] : null; $apostador = isset($_POST['apostador']) ? $_POST['apostador'] : null; // quero que esse apostador não se repita. Se já estiver na tabela, avisar e sair. $telefone = isset($_POST['telefone']) ? $_POST['telefone'] : null; $numero = isset($_POST['numero']) ? $_POST['numero'] : null; // quero que cheque esse número na tabela existente, e caso exista, retornar para inserir outro.     // validação (bem simples, só pra evitar dados vazios) if (empty($data_hora) || empty($apostador) || empty($telefone) || empty($numero)) {     echo "Volte e preencha todos os campos";     exit; } $hoje = date("d-m-Y H:i"); $limite = ('08-03-2019 16:35');    if (strtotime($hoje) >= strtotime($limite)){         echo "Esgotado o horario limite. Aguarde para o próximo sorteio!";         exit;     } // a data vem no formato dd/mm/YYYY // então precisamos converter para YYYY-mm-dd // insere no banco $PDO = db_connect(); // Acredito que esse teste deva ser feito aqui, antes de gravar, mas é só um palpite, pois tô mais perdido do que padre (alguns) em boate //verificar se apostador e numero já existem na tabela, e caso exista, retornar o fluxo $sql = "INSERT INTO palpites(data_hora, apostador, telefone, numero) VALUES(:data_hora, :apostador, :telefone, :numero)"; $stmt = $PDO->prepare($sql); $stmt->bindParam(':data_hora', $data_hora); $stmt->bindParam(':apostador', $apostador); $stmt->bindParam(':telefone', $telefone); $stmt->bindParam(':numero', $numero);     if ($stmt->execute()) {     header('Location: index.php'); } else {     echo "Erro ao cadastrar";     print_r($stmt->errorInfo()); }
    • Por lucasrodrigues
      Estou com esse problema ao tentar vincular uma tabela do MySql a um DataSet. Utilizo o MySqlConnector 8.0.13, MySql-For-VisualStudio 1.2.8.

    • Por Kelven
      Bom dia galera tudo bem?
      Eu to com um problema, vejam o código 
      if($vencimento_carne != "") { for($i=1; $i<=$parcela; $i++){ $data_vencida = date('Y-m-d', strtotime("+1 month", strtotime($vencimento_carne))); echo $data_vencida; $sql_carne = "INSERT INTO carnes(valor, data_vencimento, valor_juros, status) VALUES ('$valor_carne', '$data_vencida', 'testet', 'Pendente')"; $query_carne = mysql_query($sql_carne); } } Minha intenção é q o mês dessa variável data vencida seja + 1 para cada linha que inserir do BD, porém desse jeito que acima eles estão ficando todos iguais com a mesma data, alguém pode me ajudar a resolver isso??
×

Informação importante

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