-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpratica_5_agrupamentos_e_ordenacao
67 lines (51 loc) · 2.85 KB
/
pratica_5_agrupamentos_e_ordenacao
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
-- Criando Tabelas --
CREATE TABLE tipos(
id SERIAL PRIMARY KEY,
nome VARCHAR(60) NOT NULL);
CREATE TABLE fabricantes(
id SERIAL PRIMARY KEY,
nome VARCHAR(60) NOT NULL);
CREATE TABLE produtos(
id SERIAL PRIMARY KEY,
nome VARCHAR(60) NOT NULL,
id_fabricante INT REFERENCES fabricantes(id) NOT NULL,
quantidade INT NOT NULL, id_tipo INT REFERENCES tipos(id) NOT NULL);
-- Populando Tabelas --
INSERT INTO tipos (nome) VALUES ('Console');
INSERT INTO tipos (nome) VALUES ('Notebook');
INSERT INTO tipos (nome) VALUES ('Celular');
INSERT INTO tipos (nome) VALUES ('Smartphone');
INSERT INTO tipos (nome) VALUES ('Sofá');
INSERT INTO tipos (nome) VALUES ('Armário');
INSERT INTO tipos (nome) VALUES ('Refrigerador');
INSERT INTO fabricantes (nome) VALUES ('Sony');
INSERT INTO fabricantes (nome) VALUES ('Dell');
INSERT INTO fabricantes (nome) VALUES ('Microsoft');
INSERT INTO fabricantes (nome) VALUES ('Samsung');
INSERT INTO fabricantes (nome) VALUES ('Apple');
INSERT INTO fabricantes (nome) VALUES ('Beline');
INSERT INTO fabricantes (nome) VALUES ('Magno');
INSERT INTO fabricantes (nome) VALUES ('CCE');
INSERT INTO fabricantes (nome) VALUES ('Nintendo');
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('Playstation 3', 1, 100, 1);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('Core 2 Duo 4GB RAM 500GB HD', 2, 200, 2);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('Xbox 360 120GB', 3, 350, 1);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('GT-I6220 Quad Band', 4, 300, 3);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('iPhone 4 32GB', 5, 50, 4);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('Playstation 2', 1, 100, 1);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('Sofá Estofado', 6, 200, 5);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('Armário de Serviço', 7, 50, 6);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('Refrigerador 420L', 8, 200, 7);
INSERT INTO produtos (nome, id_fabricante, quantidade, id_tipo) VALUES ('Wii 120GB', 8, 250, 1);
-- Realizando Agrupamentos --
-- GROUP BY --
SELECT t.nome AS Tipo, f.nome AS Fabricante, SUM(p.quantidade) AS Quantidade_em_estoque FROM
tipos AS t, fabricantes AS f, produtos AS p
WHERE t.id = p.id_tipo AND f.id = p.id_fabricante GROUP BY t.nome, f.nome;
-- Having --
SELECT t.nome AS Tipo, f.nome AS Fabricante, SUM(p.quantidade) AS Quantidade_em_estoque FROM
tipos AS t, fabricantes AS f, produtos AS p
WHERE t.id = p.id_tipo AND f.id = p.id_fabricante GROUP BY t.nome, f.nome HAVING SUM(p.quantidade) > 200;
-- ORDER BY ASC/DESC --
SELECT id, nome, id_tipo, id_fabricante, quantidade FROM produtos ORDER BY id ASC;
SELECT id, nome, id_tipo, id_fabricante, quantidade FROM produtos ORDER BY id DESC;