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 !
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
Curtir tópico
+ 0
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
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;
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.
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.
SELECT codcliente FROM pedido GROUP BY codcliente HAVING COUNT(codcliente) > 2
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
Clique aqui para fazer login e interagir na Comunidade :)