### INFO B - Caroline Campos Lima, 04 # B.D Session Four: Query or not to Query? QUERY!!!! [toc] ## PARTE I ### Desafio 1 Filtrando por : nome da categoria Ordenando por : nome da categoria e nome do produto ```sql= SELECT c.nm_categoria, p.nm_produto, p.vl_preco FROM tb_categoria c JOIN tb_produto p ON c.id_categoria = p.id_categoria WHERE c.nm_categoria = 'Masculino' ORDER BY c.nm_categoria, p.nm_produto; ``` ### Desafio 2 Filtrando por : produtos que possuem o estoque disponível menor que o estoque mínimo. Ordenando por : nome da categoria e nome do produto ```sql= SELECT c.nm_categoria, p.nm_produto, p.vl_preco, e.qtd_minima, e.qtd_disponivel FROM tb_produto p JOIN tb_categoria c ON p.id_categoria = c.id_categoria JOIN tb_estoque e ON p.id_produto = e.id_produto WHERE e.qtd_disponivel < e.qtd_minima ORDER BY c.nm_categoria, p.nm_produto; ``` ### Desafio 3 Filtrando por : nome categoria e nome do produto de forma parcial Ordenando por : preço de forma decrescente ```sql= SELECT c.nm_categoria, p.nm_produto, p.vl_preco, e.qtd_minima, e.qtd_disponivel FROM tb_produto p JOIN tb_categoria c ON p.id_categoria = c.id_categoria JOIN tb_estoque e ON p.id_produto = e.id_produto WHERE c.nm_categoria LIKE 'Feminino' AND p.nm_produto LIKE '%a%' ORDER BY p.vl_preco DESC; ``` ### Desafio 4 Filtrando por : nome cliente e cidade Ordenando por : cidade ```sql= SELECT c.nm_cliente, c.ds_cpf, e.ds_cep, e.ds_endereco, e.nr_endereco, e.ds_cidade FROM tb_cliente c JOIN tb_endereco e ON c.id_endereco = e.id_endereco WHERE c.nm_cliente LIKE 'M%' AND e.ds_cidade LIKE '%r%' ORDER BY e.ds_cidade; ``` ### Desafio 5 Filtrando por : entre um período de início e fim da data da venda Ordenando por : id da venda ```sql= SELECT v.id_venda, v.dt_venda, c.nm_cliente, v.ds_nota_fiscal, v.tp_forma_pagamento, e.ds_endereco, e.nr_endereco FROM tb_venda v JOIN tb_cliente c ON v.id_cliente = c.id_cliente JOIN tb_endereco e ON v.id_endereco_entrega = e.id_endereco WHERE v.dt_venda BETWEEN '2021-04-01' AND '2021-04-30' ORDER BY v.id_venda; ``` ### Desafio 6 Filtrando por : nome cliente ou nota fiscal Ordenando por : id da venda ```sql= SELECT v.id_venda, v.dt_venda, c.nm_cliente, v.ds_nota_fiscal, v.tp_forma_pagamento, e.ds_endereco, e.nr_endereco FROM tb_venda v JOIN tb_cliente c ON v.id_cliente = c.id_cliente JOIN tb_endereco e ON v.id_endereco_entrega = e.id_endereco WHERE c.nm_cliente LIKE 'Samanta Marques' OR v.ds_nota_fiscal = 'NF23064356' ORDER BY v.id_venda; ``` ### Desafio 7 Filtrando por : data de venda, endereco Ordenando por : id da venda ```sql= SELECT v.id_venda, v.dt_venda, c.nm_cliente, v.ds_nota_fiscal, e.ds_endereco, e.nr_endereco FROM tb_venda v JOIN tb_cliente c ON v.id_cliente = c.id_cliente JOIN tb_endereco e ON v.id_endereco_entrega = e. id_endereco WHERE v.dt_venda = '2021-06-29' AND e.ds_endereco LIKE 'Rua Augusto' ORDER BY v.id_venda; ``` ### Desafio 8 Filtrando por : id da venda ou nota fiscal Ordenando por : id da venda ```sql= SELECT v.id_venda, v.dt_venda, c.nm_cliente, v.ds_nota_fiscal, e.ds_endereco, e.nr_endereco, p.nm_produto, ca.nm_categoria, p.vl_preco FROM tb_venda v JOIN tb_cliente c ON v.id_cliente = c.id_cliente JOIN tb_endereco e ON v.id_endereco_entrega = e.id_endereco JOIN tb_venda_item vi ON v.id_venda = vi.id_venda JOIN tb_produto p ON vi.id_produto = p.id_produto JOIN tb_categoria ca ON p.id_categoria = ca.id_categoria JOIN tb_estoque es ON p.id_produto = es.id_produto WHERE v.id_venda = 8 OR v.ds_nota_fiscal = 'NF13985403' ORDER BY v.id_venda; ``` ### Desafio 9 Filtrando por : data da venda Ordenando por : id da venda ```sql= SELECT v.id_venda, v.dt_venda, c.nm_cliente, v.ds_nota_fiscal, e.ds_endereco, e.nr_endereco, p.nm_produto, ca.nm_categoria, p.vl_preco FROM tb_venda v JOIN tb_cliente c ON v.id_cliente = c.id_cliente JOIN tb_endereco e ON v.id_endereco_entrega = e.id_endereco JOIN tb_venda_item vi ON v.id_venda = vi.id_venda JOIN tb_produto p ON vi.id_produto = p.id_produto JOIN tb_categoria ca ON p.id_categoria = ca.id_categoria JOIN tb_estoque es ON p.id_produto = es.id_produto WHERE v.dt_venda = '2021-05-23' ORDER BY v.id_venda; ``` ### Desafio 10 Filtrando por : data da venda Ordenando por : nome do produto ```sql= SELECT p.nm_produto, c.nm_categoria, p.vl_preco FROM tb_produto p JOIN tb_categoria c ON p.id_categoria = c.id_categoria JOIN tb_venda_item vi ON p.id_produto = vi.id_produto JOIN tb_venda v ON vi.id_venda = v.id_venda WHERE v.dt_venda = '2021-11-30' ORDER BY p.nm_produto; ``` ## PARTE II ### Desafio 11 Filtrando pelos produtos que nunca foram vendidos ```sql= SELECT p.nm_produto, c.nm_categoria, p.vl_preco FROM tb_produto p JOIN tb_categoria c ON p.id_categoria = c.id_categoria WHERE p.id_produto NOT IN (SELECT id_produto FROM tb_venda_item); ``` ### Desafio 12 Filtrando pelas categorias que não possuem produtos ```sql= SELECT c.nm_categoria, c.id_categoria FROM tb_produto p RIGHT JOIN tb_categoria c ON p.id_categoria = c.id_categoria WHERE p.id_produto IS NULL; ``` ### Desafio 13 Filtrando pelos clientes que não possuem endereço ```sql= SELECT c.id_cliente, c.nm_cliente, c.ds_cpf FROM tb_cliente c LEFT JOIN tb_endereco e ON c.id_endereco = e.id_endereco WHERE e.id_endereco IS NULL; ``` ### Desafio 14 Filtrando pelas vendas que não possuem clientes ```sql= SELECT id_venda, dt_venda, nm_cliente, ds_nota_fiscal, tp_forma_pagamento, ds_endereco, nr_endereco FROM tb_venda v LEFT JOIN tb_cliente c ON c.id_cliente = v.id_cliente JOIN tb_endereco e ON v.id_endereco_entrega = e.id_endereco WHERE v.id_cliente IS NULL ORDER BY v.id_venda; ``` ## PARTE III ### Desafio 15 Agrupando por id_venda Selecionando a contagem de items por venda ```sql= SELECT v.id_venda, COUNT (vi.id_venda_item) AS qntItens FROM tb_venda v JOIN tb_venda_item vi ON v.id_venda = vi.id_venda GROUP BY v.id_venda; ``` ### Desafio 16 Agrupando por id_venda Selecionando a contagem de items da venda e somando o preco dos itens da venda ```sql= SELECT v.id_venda, COUNT (vi.id_venda_item) qnt, SUM (p.vl_preco) total FROM tb_venda v JOIN tb_venda_item vi ON v.id_venda = vi.id_venda JOIN tb_produto p ON p.id_produto = vi.id_produto GROUP BY v.id_venda; ``` ### Desafio 17 Agrupando por id da venda, data da venda e nome do cliente Selecionando a contagem de items da venda e somando o preco dos itens da venda ```sql= SELECT v.id_venda, v.dt_venda, c.nm_cliente, COUNT (vi.id_venda_item) qnt, SUM (p.vl_preco) total FROM tb_venda v JOIN tb_venda_item vi ON v.id_venda = vi.id_venda JOIN tb_produto p ON p.id_produto = vi.id_produto JOIN tb_cliente c ON c.id_cliente = v.id_cliente GROUP BY v.id_venda, v.dt_venda, c.nm_cliente; ``` ### Desafio 18 Agrupando por id da venda, data da venda e nome do cliente Selecionando a contagem de items da venda e somando o preco dos itens da venda Tendo o valor total da vendo maior que R$1000,00 ```sql= SELECT v.id_venda, v.dt_venda, c.nm_cliente, COUNT (vi.id_venda_item) qnt, SUM (p.vl_preco) total FROM tb_venda v JOIN tb_venda_item vi ON v.id_venda = vi.id_venda JOIN tb_produto p ON p.id_produto = vi.id_produto JOIN tb_cliente c ON c.id_cliente = v.id_cliente GROUP BY v.id_venda, v.dt_venda, c.nm_cliente HAVING SUM (p.vl_preco) > 100; ``` ### Desafio 19 Consultando as cidades que mais tiveram vendas Ordenando pela quantidade de vezes vendida de forma decrescente ```sql= SELECT e.ds_cidade, COUNT (vi.id_venda_item) qnt, SUM (p.vl_preco) total FROM tb_venda v JOIN tb_venda_item vi ON v.id_venda = vi.id_venda JOIN tb_produto p ON p.id_produto = vi.id_produto JOIN tb_endereco e ON e.id_endereco = v.id_endereco_entrega GROUP BY e.ds_cidade; ``` ### Desafio 20 Consultando os produtos mais vendidos Ordenando pela quantidade de vezes vendida de forma decrescente ```sql= SELECT nm_produto, vl_preco, COUNT (vi.id_venda_item) qnt FROM tb_venda_item vi JOIN tb_produto p ON vi.id_produto = p.id_produto GROUP BY nm_produto, vl_preco ORDER BY COUNT (vi.id_venda_item) DESC; ``` ## DESAFIO MONSTER ### Desafio MONSTER Consultando os top 5 clientes que mais compraram Ordenando pela quantidade de vezes comprada de forma decrescente ```sql= SELECT nm_produto, vl_preco, COUNT (vi.id_venda_item) qnt FROM tb_venda_item vi JOIN tb_produto p ON vi.id_produto = p.id_produto GROUP BY nm_produto, vl_preco ORDER BY COUNT (vi.id_venda_item) DESC LIMIT 5; ```
{"metaMigratedAt":"2023-06-16T01:15:21.140Z","metaMigratedFrom":"Content","title":"B.D Session Four: Query or not to Query? QUERY!!!!","breaks":true,"contributors":"[{\"id\":\"d83c7a84-ea20-48d2-809b-933a34168ebe\",\"add\":16887,\"del\":6957}]"}
Expand menu