CASE WHEN no SQL (Condicionais)

No SAS e em outras linguagens, contamos com o IF para criar novas informações a partir de outras que já temos. Por exemplo, se eu quero criar um campo que receba 1, se o cliente for de MG, e 0, caso contrário, eu apelo para o IF. E é muito intuitivo. SE (if) o cliente é de MG (UF=”MG”) então (then) o campo novo recebe 1. Caso contrário, recebe 0. Seria algo como o script abaixo: Continuar a ler “CASE WHEN no SQL (Condicionais)”

Filtros no SQL

Fazer filtros é algo comum em qualquer análise de dados. Muitas vezes você não quer analisar a sua base inteira de clientes, só quer analisar os clientes de algum estado. Ou então só quer analisar os clientes de alguma faixa etária. Pois bem, hoje vamos ver como filtrar no SQL – use o SQL Fiddle para reproduzir esse post.  Continuar a ler “Filtros no SQL”

Como converter de string para número no SQL

Novamente, as formatações atrapalhando nossa vida. Quem nunca recebeu uma base em que o campo estava mal formatado, muitas das vezes o número apareceu no formato texto. No SQL é fácil de resolver isso, use a função CAST(): Continuar a ler “Como converter de string para número no SQL”

Group By no SQL

Imagine que você tenha a informação de renda dos clientes das suas lojas ao redor do Brasil. Seria interessante saber qual a renda média da sua base de clientes, claro. Mas talvez fosse mais interessante ainda saber a renda média de clientes por estado. Para fazer isso, sumarização da informação por um determinado grupo, você precisa conhecer o famoso GROUP BY. O Group By serve para fazer exatamente o que o nome diz: “agrupar por” algum campo. Imagine que você tenha uma coluna com valores de alguma variável. Você quer agrupar essa variável de alguma forma, seja fazendo uma soma ou calculando a média. Porém, você tem a necessidade de agrupar por alguma outra variável. É aí que entra o group by. Vamos ver um exemplo para facilitar. Primeiro, criamos uma tabela para trabalharmos o exemplo. Vamos criar uma tabela já bastante manjada por quem acompanha o site, as compras que os clientes fizeram em uma determinada loja:

-- exclui tabela caso ela exista
drop table base_compras;

-- cria os campos da tabela
CREATE TABLE base_compras (
Id int,
Nome varchar(50),
Sobrenome varchar(50),
Estado varchar(2),
Gastos decimal,
Data_Compra date
);

-- insere valores na tabela 
INSERT INTO base_compras
VALUES
(152, 'Andre', 'Silva', 'MG', 351.50, '2018-01-22'),
(222, 'Barbara', 'Toledo', 'SP', 250.10, '2018-05-15'),
(451, 'Carlos', 'Pinheiro', 'MG', 455.00, '2017-02-05'),
(754, 'Eduardo', 'Silva', 'SP', 390.10, '2018-04-10'),
(897, 'Juliana', 'Oliveira', 'MG', 150.50, '2017-03-01'),
(852, 'Maria', 'Lima', 'MG', 325.90, '2018-05-30'),
(997, 'Ricardo', 'Pereira', 'MG', 332.59, '2018-05-25'),
(535, 'Vanessa', 'Costa', 'SP', 241.57, '2017-04-30');

-- visualiza tabela

select * from base_compras;
Primeiro, eu coloco um drop table no início do código, pois sempre que ele for rodar, ele exclui a tabela antiga que possui o nome base_compras. No SQL, se você tentar criar uma tabela e já existir outra com mesmo nome, ele retorna um erro. Por esse motivo, eu costumo adicionar um drop table antes de um create table
Agora que temos a base, vamos tentar resumir as informações por estado. Vamos obter a média e a soma dos gastos por cada estado:
-- sumariza os gastos por Estado
select estado, 
sum(gastos) as gasto_total,
avg(gastos) as media_gastos
from base_compras
group by 1
order by 1;
Note que a lógica é bem simples. Primeiro, selecionamos o que queremos: o estado (que será o objeto pelo qual as outras informações serão agrupadas), a soma de gastos (que denominamos “gasto_total”) e a média dos gastos (denominada media_gastos). Por fim, agrupamos e ordenamos pelo primeiro item selecionado: o estado. Poderíamos fazer a mesma coisa, mas utilizando o nome do campo:
 
-- sumariza os gastos por Estado
select estado, 
sum(gastos) as gasto_total,
avg(gastos) as media_gastos
from base_compras
group by estado
order by estado;
Você poderia ordenar por mais campos também. Vamos ver um exemplo um pouquinho mais complexo (mas bem pouco).

Como estou trabalhando no SQLite, não consigo utilizar as funções mais simples para lidar com data, como por exemplo year(), month(), day(). Por isso, apenas para que vocês entendam como funciona, vou demonstrar o que faz a função strftime():

select strftime('%Y', Data_Compra) from base_compras

Veja que ela extrai a informação de ano da variável Data_Compra. Eu fiz isso porque agora nós vamos obter a média e a soma dos gastos agrupados por Estado e por Ano. Ou seja, veremos a média dos gastos dos clientes de MG no ano de 2017 e a média no ano de 2018. O mesmo para SP.

select estado, 
            strftime("%Y", Data_Compra) as Ano,
            sum(gastos) as gasto_total,
            avg(gastos) as media_gastos
from base_compras
group by 1,2
order by 1,2;

Viu que simples? Agora você pode fazer resumos dos seus dados de uma forma bem mais completa.

Gostou do post? Veja mais de SQL em Programação em SQL. Além disso, se restou alguma dúvida, ou se você tem alguma crítica, comentário ou sugestão, entre em contato deixando um comentário ou escrevendo através do contato deixado em Sobre o Estatsite / Contato.

Caso tenha interesse em obter mais conteúdos de Data Science, você pode acompanhar o @EstatSite

Tutorial: SQL do Zero

SQL é uma linguagem extremamente popular no mundo de Ciência de Dados. Diferente do R e do Python, que são muito utilizadas para executar a modelagem e as análises descritivas/exploratórias, o SQL é uma linguagem de pesquisa declarativa padrão para banco de dados relacional*. Em outras palavras, é a linguagem utilizada para consulta em banco de dados. Por esse motivo, é comum vê-la quando se está organizando as informações.

Muitos cientistas de dados que estão mais próximos ao negócio acabam não fazendo parte desse processo de manutenção de banco de dados. Dessa forma, fazem pouco uso do SQL. Entretanto, aprender a linguagem é de suma importância por vários motivos. Você pode precisar fazer algum tipo de extração usando ferramentas que envolvem a linguagem; você pode estar em uma empresa onde o cientista de dados é mais envolvido com manutenção de bancos de dados; dentre várias outras situações existentes. Não à toa, é extremamente comum que a linguagem apareça em cases de processos seletivos para cientista de dados. Sendo assim, este post será dedicado ao SQL, contemplando formas de criar tabelas, filtros, agrupamentos, funções estatísticas, formas de ordenar, renomear colunas, dentre outras coisas.  Continuar a ler “Tutorial: SQL do Zero”

Introdução ao SQL

SQL (Structured Query Language) é a linguagem padrão utilizada para armazenar, manipular e recuperar informações de bancos de dados. Colocando de forma simples, é através do SQL que é possível criar e atualizar nossos dados através de um modelo relacional. Os maiores usuários da linguagem são os DBAs (Database Administrators), responsáveis por toda a gestão dos dados, desde criar tabelas até dar acesso às demais áreas (para os mais curiosos há um podcast brasileiro com foco nos DBAs chamado DatabaseCast).

Leia mais…