Uma procedure que exiba a quantidade de clientes que fizeram mais de dois pedidos na base de dados.

02/11/2021

0

Boa noite,
Conheço a DEVMEDIA a pouco tempo e estou experimentando a plataforma para verificar se ela atende a minha principal necessidade, auxílio nos meus estudos da faculdade de Análise e Desenvolvimento de Sistemas. Por isso, vou deixar aqui uma dúvida para verificar como é a resposta dos professores e voluntários para estas solicitações, que como disse, é a principal defasagem no aprendizado. Segue a dúvida:
Eu preciso criar..
"uma procedure que exiba a quantidade de clientes que fizeram mais de dois
pedidos na base
de dados."

Exemplificando a tabela:
+-----------+------------+--------------+------------+
| codpedido | data | valor | codcliente |
+-----------+------------+--------------+------------+
| 1 | 2009-11-11 | 1052.7145200 | 1 |
| 2 | 2009-11-03 | 42.2290000 | 2 |
| 3 | 2009-11-13 | 94.2590000 | 3 |
| 4 | 2009-11-22 | 241.7580000 | 3 |
| 5 | 2009-11-30 | 157.1790000 | 3 |
| 6 | 2009-07-01 | 278.1790000 | 4 |
| 7 | 2009-07-15 | 120.7580000 | 5 |
| 8 | 2009-05-05 | 108.5370000 | 6 |
| 9 | 2009-05-19 | 204.4900000 | 7 |
| 10 | 2009-11-06 | 18.0290000 | 8 |
| 11 | 2010-02-15 | 3.8200000 | 9 |
| 12 | 2010-02-02 | 26.4800000 | 10 |
| 13 | 2010-02-22 | 56.7800000 | 10 |
| 14 | 2010-02-27 | 87.0900000 | 10 |
| 15 | 2010-03-01 | 117.3900000 | 2 |
| 16 | 2010-03-10 | 147.6900000 | 2 |
| 17 | 2010-04-15 | 178.0000000 | 2 |
| 18 | 2010-05-15 | 208.3000000 | 4 |
| 19 | 2010-06-06 | 238.6000000 | 4 |
| 20 | 2010-06-18 | 268.9100000 | 7 |
| 21 | 2010-06-22 | 299.2000000 | 8 |
| 22 | 2010-07-01 | 329.5200000 | 9 |
| 102 | 2021-10-07 | 550.5000000 | 10 |
| 103 | 2021-02-13 | 202.2000000 | 1 |
| 104 | 2021-03-10 | 1030.9950000 | 4 |
+-----------+------------+--------------+------------+

Assim, já fiz este procedimento mas não está completo :

DELIMITER $
CREATE PROCEDURE Sp_ContaPedidos ()
BEGIN
SELECT codcliente, COUNT(codcliente) AS Quantas_Vezes_repetiu
FROM pedido
GROUP BY codcliente
HAVING COUNT(codcliente) > 2;
END $
DELIMITER ;

Desde já, agradeço o retorno !
Ernane Barreto

Ernane Barreto

Responder

Post mais votado

02/11/2021

SELECT
    COUNT(codcliente) numcli
FROM (
    SELECT codcliente
    FROM pedido
    GROUP BY codcliente
    HAVING COUNT(codcliente) > 2
) TAB

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

02/11/2021

Ernane Barreto

Show ! Muito obrigado Emerson Nascimento!
Só uma última dúvida...
Pra que serve o "TAB" ? e por que eu não consigo finalizar com ponto e vírgula sem colocar nada antes, como este TAB ? Percebi que qualquer caracter antes do ";" já fecha a consulta também.
Por exemplo:

SELECT
COUNT(codcliente) numcli
FROM (
SELECT codcliente
FROM pedido
GROUP BY codcliente
HAVING COUNT(codcliente) > 2
) X;
Responder

02/11/2021

Emerson Nascimento

é preciso dar um alias (apelido) para o resultset.
SELECT codcliente
FROM pedido
GROUP BY codcliente
HAVING COUNT(codcliente) > 2
o comando acima traz um resultado, e quero fazer uma nova select a partir desse resultado.
pra isso ele precisa ter um nome, como se fosse uma tabela. então chamei de TAB, você testou chamando de X. como é uma "tabela" temporária, pode ter qualquer nome.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar