connect.cursor, que é um objeto que permite interagir com o banco de dadosrm: ../dados/data.db: No such file or directory
execute é empregado para executar comandos dentro do banco SQL.commit, que fará a confirmação da operação.cursor.execute('''
INSERT INTO vendas (vendedor, produto, valor, data_venda)
VALUES
('Ana', 'Produto A', 120.5, '2024-09-01'),
('Carlos', 'Produto B', 200.0, '2024-10-02'),
('Ana', 'Produto C', 150.0, '2024-09-03'),
('Bruno', 'Produto A', 300.0, '2024-11-04'),
('Carlos', 'Produto C', 100.0, '2024-10-05');
''')
conn.commit()(1, 'Ana', 'Produto A', 120.5, '2024-09-01')
(2, 'Carlos', 'Produto B', 200.0, '2024-10-02')
(3, 'Ana', 'Produto C', 150.0, '2024-09-03')
(4, 'Bruno', 'Produto A', 300.0, '2024-11-04')
(5, 'Carlos', 'Produto C', 100.0, '2024-10-05')
shape: (5, 5)
┌─────┬──────────┬───────────┬───────┬────────────┐
│ id ┆ vendedor ┆ produto ┆ valor ┆ data_venda │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ str ┆ f64 ┆ str │
╞═════╪══════════╪═══════════╪═══════╪════════════╡
│ 1 ┆ Ana ┆ Produto A ┆ 120.5 ┆ 2024-09-01 │
│ 2 ┆ Carlos ┆ Produto B ┆ 200.0 ┆ 2024-10-02 │
│ 3 ┆ Ana ┆ Produto C ┆ 150.0 ┆ 2024-09-03 │
│ 4 ┆ Bruno ┆ Produto A ┆ 300.0 ┆ 2024-11-04 │
│ 5 ┆ Carlos ┆ Produto C ┆ 100.0 ┆ 2024-10-05 │
└─────┴──────────┴───────────┴───────┴────────────┘
vendas_total = pl.read_database('''
SELECT vendedor, SUM(valor) as total_vendas
FROM vendas
GROUP BY vendedor;
''', conn)
print(vendas_total)shape: (3, 2)
┌──────────┬──────────────┐
│ vendedor ┆ total_vendas │
│ --- ┆ --- │
│ str ┆ f64 │
╞══════════╪══════════════╡
│ Ana ┆ 270.5 │
│ Bruno ┆ 300.0 │
│ Carlos ┆ 300.0 │
└──────────┴──────────────┘
vendas_medias = pl.read_database('''
SELECT vendedor, AVG(valor) as total_vendas
FROM vendas
GROUP BY vendedor;
''', conn)
print(vendas_medias)shape: (3, 2)
┌──────────┬──────────────┐
│ vendedor ┆ total_vendas │
│ --- ┆ --- │
│ str ┆ f64 │
╞══════════╪══════════════╡
│ Ana ┆ 135.25 │
│ Bruno ┆ 300.0 │
│ Carlos ┆ 150.0 │
└──────────┴──────────────┘
shape: (3, 4)
┌──────────┬───────────────┬──────────────┬──────────────┐
│ vendedor ┆ numero_vendas ┆ total_vendas ┆ media_vendas │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ f64 ┆ f64 │
╞══════════╪═══════════════╪══════════════╪══════════════╡
│ Ana ┆ 2 ┆ 270.5 ┆ 135.25 │
│ Bruno ┆ 1 ┆ 300.0 ┆ 300.0 │
│ Carlos ┆ 2 ┆ 300.0 ┆ 150.0 │
└──────────┴───────────────┴──────────────┴──────────────┘
ticket_alto = pl.read_database("""
SELECT * FROM vendas WHERE valor >= 200
""", conn)
print(ticket_alto)shape: (2, 5)
┌─────┬──────────┬───────────┬───────┬────────────┐
│ id ┆ vendedor ┆ produto ┆ valor ┆ data_venda │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ str ┆ f64 ┆ str │
╞═════╪══════════╪═══════════╪═══════╪════════════╡
│ 2 ┆ Carlos ┆ Produto B ┆ 200.0 ┆ 2024-10-02 │
│ 4 ┆ Bruno ┆ Produto A ┆ 300.0 ┆ 2024-11-04 │
└─────┴──────────┴───────────┴───────┴────────────┘
vendas_mensais = pl.read_database("""
SELECT strftime('%Y-%m', data_venda) AS mes, SUM(valor) AS total_vendas
FROM vendas GROUP BY mes ORDER BY mes
""", conn)
print(vendas_mensais)shape: (3, 2)
┌─────────┬──────────────┐
│ mes ┆ total_vendas │
│ --- ┆ --- │
│ str ┆ f64 │
╞═════════╪══════════════╡
│ 2024-09 ┆ 270.5 │
│ 2024-10 ┆ 300.0 │
│ 2024-11 ┆ 300.0 │
└─────────┴──────────────┘
cursor.execute('''
CREATE TABLE IF NOT EXISTS produtos (
id INTEGER PRIMARY KEY,
nome TEXT NOT NULL,
categoria TEXT NOT NULL,
preco REAL NOT NULL,
estoque INTEGER NOT NULL
);
''')
cursor.execute('''
INSERT INTO produtos (nome, categoria, preco, estoque) VALUES
('Produto A', 'Categoria 1', 100.0, 50),
('Produto B', 'Categoria 2', 150.0, 30),
('Produto C', 'Categoria 1', 200.0, 20),
('Produto D', 'Categoria 2', 250.0, 10),
('Produto E', 'Categoria 3', 300.0, 0);
''')
conn.commit()shape: (5, 5)
┌─────┬───────────┬─────────────┬───────┬─────────┐
│ id ┆ nome ┆ categoria ┆ preco ┆ estoque │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ str ┆ f64 ┆ i64 │
╞═════╪═══════════╪═════════════╪═══════╪═════════╡
│ 1 ┆ Produto A ┆ Categoria 1 ┆ 100.0 ┆ 50 │
│ 2 ┆ Produto B ┆ Categoria 2 ┆ 150.0 ┆ 30 │
│ 3 ┆ Produto C ┆ Categoria 1 ┆ 200.0 ┆ 20 │
│ 4 ┆ Produto D ┆ Categoria 2 ┆ 250.0 ┆ 10 │
│ 5 ┆ Produto E ┆ Categoria 3 ┆ 300.0 ┆ 0 │
└─────┴───────────┴─────────────┴───────┴─────────┘
vendas e produtosvalor em vendas representa o valor de venda do respectivo produto.preco em produtos representa o valor de compra do respectivo produto.vendas e produtoslucros = pl.read_database("""
SELECT produto, valor AS compra, preco AS venda, preco-valor AS lucro
FROM vendas
INNER JOIN produtos ON vendas.produto = produtos.nome
""", conn)
print(lucros)shape: (5, 4)
┌───────────┬────────┬───────┬────────┐
│ produto ┆ compra ┆ venda ┆ lucro │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ f64 ┆ f64 ┆ f64 │
╞═══════════╪════════╪═══════╪════════╡
│ Produto A ┆ 120.5 ┆ 100.0 ┆ -20.5 │
│ Produto B ┆ 200.0 ┆ 150.0 ┆ -50.0 │
│ Produto C ┆ 150.0 ┆ 200.0 ┆ 50.0 │
│ Produto A ┆ 300.0 ┆ 100.0 ┆ -200.0 │
│ Produto C ┆ 100.0 ┆ 200.0 ┆ 100.0 │
└───────────┴────────┴───────┴────────┘
lucro_medio = pl.read_database("""
SELECT vendedor, produto, AVG(preco-valor) AS lucro_medio
FROM vendas
INNER JOIN produtos ON vendas.produto = produtos.nome
GROUP BY vendedor
""", conn)
print(lucro_medio)shape: (3, 3)
┌──────────┬───────────┬─────────────┐
│ vendedor ┆ produto ┆ lucro_medio │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ f64 │
╞══════════╪═══════════╪═════════════╡
│ Ana ┆ Produto A ┆ 14.75 │
│ Bruno ┆ Produto A ┆ -200.0 │
│ Carlos ┆ Produto B ┆ 25.0 │
└──────────┴───────────┴─────────────┘