-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathANOTACAO - Resposta da prova de SQL.sql
More file actions
84 lines (66 loc) · 2.7 KB
/
Copy pathANOTACAO - Resposta da prova de SQL.sql
File metadata and controls
84 lines (66 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
PROVA SQL - GERALDO
QUESTÃO 1:
SELECT CAT.ID_CATEGORIA, CAT.DESCRICAO, COUNT(*) AS QTD_PROD
FROM categoria CAT
LEFT JOIN produto PRO ON CAT.ID_CATEGORIA = PRO.ID_CATEGORIA
GROUP BY CAT.ID_CATEGORIA, CAT.DESCRICAO
QUESTÃO 2:
SELECT P.ID_CLIENTE, C.NOME, COUNT(*) AS QTD_PED
FROM pedido P, cliente C
WHERE P.ID_CLIENTE = C.ID_CLIENTE
AND month(P.DATA_CADASTRO) = MONTH(NOW())
GROUP BY P.ID_CLIENTE, C.NOME, month(P.DATA_CADASTRO)
HAVING COUNT(*) > 10
QUESTÃO 3:
SELECT C.ID_CLIENTE, C.NOME, COUNT(P.ID_CLIENTE) AS QTD_PED
FROM cliente C
LEFT JOIN PEDIDO P ON C.ID_CLIENTE = P.ID_CLIENTE
GROUP BY P.ID_CLIENTE, C.NOME, month(P.DATA_CADASTRO)
HAVING COUNT(P.ID_CLIENTE) < 10
ORDER BY COUNT(P.ID_CLIENTE) DESC
QUESTÃO 4:
SELECT i.ID_PRODUTO, P.DESCRICAO, SUM(i.QUANTIDADE)
from item_pedido i, produto p
WHERE p.ID_PRODUTO = I.ID_PRODUTO
GROUP BY i.ID_PRODUTO
ORDER BY SUM(i.QUANTIDADE) DESC
LIMIT 3
QUESTÃO 5:
SELECT RANK.P, P.DESCRICAO, RANK.QT
FROM (
SELECT QTD.P, MIN(QTD.QT) AS QT
FROM (SELECT ID_PRODUTO AS P, SUM(QUANTIDADE) AS QT FROM item_pedido GROUP BY ID_PRODUTO) AS QTD
GROUP BY QTD.P, QTD.QT
HAVING QTD.QT = (SELECT MIN(QTD.QT) FROM (SELECT ID_PRODUTO AS P, SUM(QUANTIDADE) AS QT FROM item_pedido GROUP BY ID_PRODUTO) AS QTD)
UNION ALL
SELECT QTDM.P, MAX(QTDM.QT)
FROM (SELECT ID_PRODUTO AS P, SUM(QUANTIDADE) AS QT FROM item_pedido GROUP BY ID_PRODUTO) AS QTDM
GROUP BY QTDM.P, QTDM.QT
HAVING QTDM.QT = (SELECT MAX(QTD.QT) FROM (SELECT ID_PRODUTO AS P, SUM(QUANTIDADE) AS QT FROM item_pedido GROUP BY ID_PRODUTO) AS QTD)
) RANK, produto P
WHERE RANK.P = P.ID_PRODUTO
ORDER BY 3 DESC
QUESTÃO 6:
Melhor da seguinte forma:
SELECT C.ID_CLIENTE, C.NOME, C.EMAIL, SUM(P.VALOR)
FROM PEDIDO P
INNER JOIN item_pedido AS I ON P.ID_PEDIDO = I.ID_PEDIDO
INNER JOIN cliente AS C ON C.ID_CLIENTE = P.ID_CLIENTE
WHERE month(P.DATA_CADASTRO) = MONTH(NOW())
AND I.ID_PRODUTO NOT IN (SELECT P.ID_PRODUTO FROM PRODUTO P WHERE P.ESTOQUE = 0)
AND C.ID_ESTADO IN (1, 2)
GROUP BY C.ID_CLIENTE, C.NOME, C.EMAIL
QUESTÃO 7:
A query em questão quer filtraros parceiros, 10, 20, 030
saber quais os vendedores atende os parceiros e quais empresas,
porém essas empresas ativas.
Um erro é filtrar um STRING no campo de código, que aceita somente INT.
Melhoria essa consulta da seguinte forma:
SELECT PAR.CODPARC, PAR.NOMEPARC,
VEN.CODVEND, VEN.APELIDO,
EMP.CODEMP, EMP.RAZ
FROM TGFPAR PAR
INNER JOIN TGFVEN VEN ON PAR.CODVEND = VEN.CODVEND
INNER JOIN TGFEMP EMP ON VEN.CODEMP = EMP.CODEMP
WHERE PAR.CODPARC IN (4259, 4270, 4348)
AND EMP.ATIVO = 'S'