Módulos MySales

Consultas SQL BásicasCapacidades

Para criar relatórios básicos, o utilizador precisa de compreender o funcionamento básico das consultas SQL. Atualmente existem vários dialetos SQL; a documentação detalha consultas no dialeto T-SQL, utilizado no SGBD MS SQL Server.

94%
Precisão de Previsão

Precisão estabelecida para produtos na Drogas

15-20%
Crescimento de Receita

Aumento de faturamento na Chudo Market após a implantação

40%
Redução de Desperdício

Redução de perdas de perecíveis na Blyzenko

Plataforma de IA

Uma plataforma de IA conecta previsão, reposição, preços e promoções — os sinais fluem automaticamente entre os módulos, mantendo pedidos, preços e campanhas sempre sincronizados.

Insight

Abaixo são descritos os principais comandos SQL necessários para o trabalho básico com scripts SQL — SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY.

Um excelente manual SQL com exemplos e a possibilidade de experimentar diferentes comandos está disponível em link .

SELECT SELECT — este é o comando básico utilizado para selecionar dados da base de dados.

Este comando é geralmente usado em conjunto com o comando FROM, que especifica de qual tabela devem ser obtidos os dados.

Também é possível selecionar a partir de várias tabelas — isto será descrito na secção JOIN .

A consulta SELECT padrão tem o seguinte aspeto: SELECT coluna1, coluna2, ... FROM nome_tabela; coluna1, coluna2, ...

nesta consulta são os nomes dos campos (colunas) da tabela a partir dos quais o utilizador pretende obter dados.

Caso o utilizador precise de selecionar todos os dados, utiliza-se *: SELECT * FROM nome_tabela; Por exemplo, o resultado da consulta SELECT sku_id, article_name FROM products; apresentará duas colunas com o código SKU e o nome da tabela PRODUCTS: E o resultado da consulta SELECT * FROM products; apresentará todas as colunas da tabela PRODUCTS: Ao criar consultas SELECT, é aconselhável atribuir aliases (nomes) às colunas: SELECT coluna_1 SKU, coluna_2 LOJA FROM nome_tabela; .

Neste exemplo, SKU e LOJA são aliases das colunas coluna_1 e coluna_2 — serão utilizados posteriormente no trabalho com o designer de relatórios.

Saiba mais sobre SELECT e experimente como funciona em link . O utilizador pode saber mais sobre o conceito de aliases em link .

Para além da seleção padrão de campos com SELECT, também é possível selecionar dados específicos.

A seguir apresentam-se as funções básicas que podem ser utilizadas diretamente numa consulta SELECT.

SELECT DISTINCT — utilizado para selecionar valores únicos de um campo. Por exemplo: SELECT DISTINCT coluna_1 FROM nome_tabela; .

Esta consulta irá apresentar apenas os valores únicos em coluna_1.

Saiba mais sobre SELECT DISTINCT e experimente como funciona em link .

SELECT TOP — utilizado para selecionar os primeiros N valores de um campo.

Por exemplo: SELECT TOP 100 coluna_1 FROM nome_tabela; . Esta consulta irá apresentar apenas os primeiros 100 valores em coluna_1.

Saiba mais sobre SELECT TOP e experimente como funciona em link .

MIN/MAX — utilizado para apresentar os valores mais pequenos ou maiores de uma coluna.

Por exemplo: SELECT MIN(coluna_1) FROM nome_tabela; . Esta consulta irá apresentar o menor valor em coluna_1.

Saiba mais sobre MIN / MAX e experimente como funciona em link .

COUNT, AVG, SUM — COUNT() conta o número de linhas de uma coluna; AVG() apresenta a média da coluna; SUM() — apresenta a soma de todos os valores.

SELECT COUNT(coluna_1) FROM nome_tabela; . Esta consulta irá apresentar o número de linhas em coluna_1.

SELECT AVG(coluna_1) FROM nome_tabela; . Esta consulta irá apresentar a média em coluna_1.

SELECT SUM(coluna_1) FROM nome_tabela; . Esta consulta irá apresentar a soma de todos os valores em coluna_1.

Saiba mais sobre COUNT, AVG, SUM e experimente como funciona em link .

WHERE O comando WHERE é utilizado para criar uma condição de seleção: SELECT coluna1, coluna2, ...

FROM nome_tabela WHERE condição; Por exemplo, se for necessário selecionar todos os valores superiores a 10, a cláusula WHERE deve ser indicada: SELECT coluna1 FROM nome_tabela WHERE coluna1 > 10; O comando WHERE também possui operadores matemáticos como maior que, menor que, diferente de, entre outros.

Estes são utilizados ao definir uma condição.

Saiba mais sobre WHERE, os operadores disponíveis e experimente como funciona em link .

Podem existir várias condições em WHERE; para as definir utilizam-se os operadores lógicos "AND", "OR", "NOT".

Se for necessário que ambas as condições sejam satisfeitas, utiliza-se AND.

Se for necessário que uma de várias condições seja satisfeita, utiliza-se OR.

Se se pretende que os dados sejam apresentados quando a condição não é satisfeita, utiliza-se NOT.

Saiba mais sobre AND, OR, NOT e experimente como funciona em link .

Os operadores IN e LIKE são operadores de comparação na cláusula WHERE.

IN permite a amostragem quando existem múltiplos valores, por exemplo: SELECT SKU_ID, ITEM_CODE FROM PRODUCTS WHERE SKU_ID in (2,4,8) Esta consulta irá apresentar apenas os SKUs cujo SKU_ID seja 2, 4 ou 8.

Saiba mais sobre IN e experimente como funciona em link .

LIKE permite ao utilizador pesquisar um determinado padrão nos dados de uma coluna, por exemplo: SELECT SKU_ID, ARTICLE_NAME FROM PRODUCTS WHERE ARTICLE_NAME like (%Ham%) Esta consulta irá apresentar os SKUs com a palavra "Ham" no nome.

Saiba mais sobre LIKE e experimente como funciona em link .

No WHERE, o utilizador também pode trabalhar com colunas que têm valores NULL (um campo sem valor).

As cláusulas WHERE padrão não funcionam com NULL. Devem ser utilizados os operadores IS NULL e IS NOT NULL.

Saiba mais sobre IS NULL e IS NOT NULL e experimente como funciona em link .

ORDER BY O comando ORDER BY permite ao utilizador ordenar a saída de dados de acordo com determinadas regras.

SELECT coluna1, coluna2, ...

FROM nome_tabela WHERE condição ORDER_BY coluna1 asc/desc Saiba mais sobre ORDER BY e experimente como funciona em link .

JOIN O comando JOIN é utilizado após o comando FROM e serve para apresentar colunas de diferentes tabelas relacionadas entre si numa consulta.

Por exemplo, se existir uma tabela PRODUCTS com as colunas SKU_ID e GROUP_ID e existir uma tabela GROUPS com as colunas GROUP_ID e GROUP_NAME, o JOIN permitirá selecionar os dados SKU_ID e GROUP_NAME de diferentes tabelas, ligando-as por GROUP_ID.

Existem vários tipos de JOIN: (INNER) JOIN — pode ser usado com ou sem o prefixo INNER — apresenta apenas os registos que têm os mesmos valores em ambas as tabelas; LEFT JOIN — apresenta todos os registos da tabela da esquerda (conforme especificado por FROM) e os registos correspondentes da tabela da direita (conforme especificado por JOIN); RIGHT JOIN — apresenta todos os registos da tabela da esquerda (conforme especificado por JOIN) e os registos correspondentes da tabela da direita (conforme especificado por FROM); FULL JOIN — apresenta todos os registos se houver correspondência na tabela da esquerda ou da direita; Saiba mais sobre JOIN e experimente como funciona em link .

O utilizador pode estudar e experimentar cada tipo de JOIN com mais detalhe seguindo os links: (INNER) JOIN , LEFT JOIN , RIGHT JOIN , FULL JOIN .

GROUP BY O comando GROUP BY é utilizado após o comando WHERE e serve para agrupar dados por semelhança.

Por exemplo, o utilizador pode agrupar todos os produtos que têm o mesmo código.

É utilizado quando existem funções de agregação após SELECT na consulta — como COUNT, MAX, MIN, SUM, AVG, etc.

SELECT coluna1, sum(coluna2) FROM nome_tabela WHERE condição GROUP BY coluna1 ORDER_BY coluna1 asc/desc Um bom exemplo de uso do GROUP BY é quando o utilizador precisa de apresentar, por exemplo, vendas de 4 semanas (da 10.ª à 13.ª semana de 2019) no contexto do SKU selecionado para duas Lojas.

Na tabela SALES_SKU, as vendas estão discriminadas por semana; é necessário somar as vendas de 4 semanas para obter o total das vendas.

Para este caso, o pedido terá o seguinte aspeto: SELECT sku_id, store_id, sum(sales_volume) vol FROM sales_sku WHERE sku_id = 93 and week between 201910 and 201913 and store_id in (1,2) GROUP BY sku_id, store_id ORDER_BY vol asc O resultado da execução de tal consulta é o seguinte: É importante que o GROUP BY seja especificado não apenas por SKU_ID, mas também por STORE_ID, uma vez que estes dois campos não são utilizados na função de agregação.

E se o utilizador selecionar apenas GROUP BY SKU_ID, o sistema irá apresentar um erro indicando que STORE_ID não está aplicado nem em GROUP BY nem em nenhuma outra função de agregação.

Saiba mais sobre GROUP_BY e experimente como funciona em link .