SQL pirando ao somar Doubles

Do nada o meu produto que custava R$ 30,40 agora parece que custa R$ 30,399999. Pior ainda, a soma das notas fiscais não bate com a soma dos produtos! Olha meu SQL piradão: [code language=”sql”] create table Vendas (valor DOUBLE); insert into Vendas (valor) values (13.20), (59.60), (30.40); select sum(valor) from Vendas; > 103.1999999999 [/code]
Continuar lendo…

2 queries e uma conta final em um único SQL

Quantos usuários do Alura já compraram livros na Casa do Código e quantos não? Fácil, executa duas queries, cria uma stored procedure (aiiiiiii meu coração), devolve um divido pelo outro: [code language=”sql”] select count(comprouNaCDC) as compraram from Aluno where comprouNaCDC = 1; > 200 [/code] [code language=”java”] select count(comprouNaCDC) as nao_compraram from Aluno where comprouNaCDC
Continuar lendo…

2 SQLs em 1. Metade do esforço, o dobro de resultado.

Precisa fazer um insert rápido pra testar algo? [code language=”sql”] insert into Clientes (nome) values (‘guilherme’); [/code] Maravilha. Mas e se forem dois clientes? Dois inserts? [code language=”sql”] insert into Clientes (nome) values (‘guilherme’); insert into Clientes (nome) values (‘paulo’); [/code] Tão claro quanto, mas mais bonito: [code language=”sql”] insert into Clientes (nome) values (‘guilherme’),
Continuar lendo…

Em SQL nulo é nulo, vazio é vazio

Como trazer quem não preencheu o campo cargo mesmo? [code language=”sql”] select nome, empresa from Alunos a where empresa = ”; > Paulo, > … > Carlos, > Total: 1000 alunos [/code] Para de brincadeira, sei que tenho mais de 1000 alunos que ainda não preencheram este campo, cade eles? [code language=”sql”] select nome, empresa
Continuar lendo…

Economizando 198 megas com um único SELECT

Quero o nome, o preço e a categoria de um produto: [code language=”sql”] select * from Produtos p join Categorias c on c.id=p.categoria_id; > 1, Livro Swift, 50.0, 3, Mobile > 2, Certificação Java, 50.0, 1, Java > 3, … [/code] Executo a query e por muitas semanas ela funciona lindamente em produção. Até que
Continuar lendo…

select count(*), count(1) e count(nome): a batalha dos counts de SQL

Quantos produtos tem minha empresa mesmo? [code language=”sql”] select count(nome) from Produtos; > 198 [/code] Mas… [code lang=sql] select count(id) from Produtos; > 200 [/code] Como assim? SQL pirou? De novo? [code lang=sql] select id, nome from Produtos where nome is null; > 190, null > 196, null [/code] Tã dã!!! O select count verifica o
Continuar lendo…