Модули MySales

Основные SQL-запросыВозможности

Для создания базовых отчётов пользователю необходимо иметь базовое представление о том, как работают SQL-запросы. На сегодняшний день существует несколько диалектов SQL; в данной документации запросы будут описаны на диалекте T-SQL, используемом в СУБД MS SQL Server.

94%
Точность прогноза

Точность по устоявшимся товарам в Drogas

15-20%
Рост выручки

Рост товарооборота в Chudo Market после внедрения

40%
Сокращение списаний

Снижение списаний свежих товаров в Blyzenko

Платформа ИИ

Единая платформа ИИ объединяет прогнозирование, пополнение, ценообразование и промо — сигналы автоматически передаются между модулями, поэтому заказы, цены и кампании всегда синхронизированы.

Аналитика

Ниже описаны основные команды SQL, необходимые для базовой работы с SQL-скриптами: SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY.

Отличный учебник по SQL с примерами и возможностью попробовать различные команды доступен по ссылке .

SELECT SELECT — это основная команда, используемая для выборки данных из базы данных.

Эта команда обычно используется вместе с командой FROM, которая указывает, из какой таблицы получать данные.

Также возможна выборка из нескольких таблиц — это описано в разделе JOIN .

Стандартный запрос SELECT выглядит следующим образом: SELECT column1, column2, ... FROM table_name; column1, column2, ...

в этом запросе — это имена полей (столбцов) в таблице, из которой пользователь хочет получить данные.

Если нужно выбрать все данные, используется *: SELECT * FROM table_name; Например, результатом запроса SELECT sku_id, article_name FROM products; будут два столбца с кодом SKU и наименованием из таблицы PRODUCTS: А результатом запроса SELECT * FROM products; будут все столбцы из таблицы PRODUCTS: При создании запросов SELECT рекомендуется назначать столбцам псевдонимы (имена): SELECT column_1 SKU, column_2 STORE FROM table_name; .

В этом примере SKU и STORE — это псевдонимы столбцов column_1 и column_2; в дальнейшем они будут использоваться при работе с конструктором отчётов.

Подробнее о SELECT и возможность попробовать его в работе — по ссылке . Подробнее о концепции псевдонимов можно узнать по ссылке .

Помимо стандартной выборки полей с помощью SELECT, можно также выбирать конкретные данные.

Ниже приведены основные функции, которые можно использовать непосредственно в запросе SELECT.

SELECT DISTINCT — используется для выбора уникальных значений поля. Например: SELECT DISTINCT column_1 FROM table_name; .

Этот запрос выведет только уникальные значения в column_1.

Подробнее о SELECT DISTINCT и возможность попробовать его в работе — по ссылке .

SELECT TOP — используется для выбора первых N значений из поля. Например: SELECT TOP 100 column_1 FROM table_name; .

Этот запрос выведет только первые 100 значений в column_1.

Подробнее о SELECT TOP и возможность попробовать его в работе — по ссылке .

MIN/MAX — используется для отображения наименьшего или наибольшего значения в столбце.

Например: SELECT MIN(column_1) FROM table_name; . Этот запрос выведет наименьшее значение в column_1.

Подробнее о MIN / MAX и возможность попробовать их в работе — по ссылке .

COUNT, AVG, SUM — COUNT() подсчитывает количество строк в столбце; AVG() отображает среднее значение столбца; SUM() — отображает сумму всех значений.

SELECT COUNT(column_1) FROM table_name; . Этот запрос выведет количество строк в column_1. SELECT AVG(column_1) FROM table_name; .

Этот запрос выведет среднее значение в column_1. SELECT SUM(column_1) FROM table_name; .

Этот запрос выведет сумму всех значений в column_1.

Подробнее о COUNT, AVG, SUM и возможность попробовать их в работе — по ссылке .

WHERE Команда WHERE используется для создания условия выборки: SELECT column1, column2, ...

FROM table_name WHERE condition; Например, если нужно выбрать все значения, которые больше 10, следует указать условие WHERE: SELECT column1 FROM table_name WHERE column1 > 10; Также команда WHERE поддерживает математические операторы: больше, меньше, не равно и т.д.

Они используются при задании условия. Подробнее о WHERE, доступных операторах и возможность попробовать их в работе — по ссылке .

В WHERE может быть несколько условий; для их определения используются логические операторы AND, OR, NOT.

Если необходимо, чтобы выполнялись оба условия, используется AND.

Если необходимо, чтобы выполнялось одно из нескольких условий, используется OR.

Если данные должны отображаться при невыполнении условия, используется NOT.

Подробнее о AND, OR, NOT и возможность попробовать их в работе — по ссылке .

Операторы IN и LIKE — это операторы сравнения в условии WHERE.

IN позволяет выполнять выборку при наличии нескольких значений, например: SELECT SKU_ID, ITEM_CODE FROM PRODUCTS WHERE SKU_ID in (2,4,8) Этот запрос отобразит только те SKU, у которых SKU_ID равен 2, 4 или 8.

Подробнее о IN и возможность попробовать его в работе — по ссылке .

LIKE позволяет искать заданный шаблон в данных столбца, например: SELECT SKU_ID, ARTICLE_NAME FROM PRODUCTS WHERE ARTICLE_NAME like (%Ham%) Этот запрос отобразит те SKU, в названии которых есть слово «Ham».

Подробнее о LIKE и возможность попробовать его в работе — по ссылке .

Также в WHERE можно работать со столбцами, содержащими значения NULL (поле без значения).

Стандартные условия WHERE не работают с NULL. Необходимо использовать операторы IS NULL и IS NOT NULL.

Подробнее о IS NULL и IS NOT NULL и возможность попробовать их в работе — по ссылке .

ORDER BY Команда ORDER BY позволяет сортировать вывод данных по определённым правилам. SELECT column1, column2, ...

FROM table_name WHERE condition ORDER_BY column1 asc/desc Подробнее о ORDER BY и возможность попробовать его в работе — по ссылке .

JOIN Команда JOIN используется после команды FROM и служит для отображения в запросе столбцов из разных таблиц, связанных между собой.

Например, если есть таблица PRODUCTS со столбцами SKU_ID, GROUP_ID и таблица GROUPS со столбцами GROUP_ID и GROUP_NAME, JOIN позволит выбрать данные SKU_ID и GROUP_NAME из разных таблиц, связав их по GROUP_ID.

Существует несколько типов JOIN: (INNER) JOIN — может использоваться с префиксом INNER или без него; отображает только те записи, которые имеют одинаковые значения в обеих таблицах; LEFT JOIN — отображает все записи из левой таблицы (указанной в FROM) и соответствующие записи из правой таблицы (указанной в JOIN); RIGHT JOIN — отображает все записи из правой таблицы (указанной в JOIN) и соответствующие записи из левой таблицы (указанной в FROM); FULL JOIN — отображает все записи при наличии совпадения в левой или правой таблице; Подробнее о JOIN и возможность попробовать его в работе — по ссылке .

Каждый тип JOIN можно изучить и попробовать подробнее, перейдя по ссылкам: (INNER) JOIN , LEFT JOIN , RIGHT JOIN , FULL JOIN .

GROUP BY Команда GROUP BY используется после команды WHERE и служит для группировки данных по сходству.

Например, можно сгруппировать все товары с одинаковым кодом.

Используется, если после SELECT в запросе есть агрегирующие функции — такие как COUNT, MAX, MIN, SUM, AVG и т.д.

SELECT column1, sum(column2) FROM table_name WHERE condition GROUP BY column1 ORDER_BY column1 asc/desc Хороший пример использования GROUP BY — когда нужно отобразить, например, продажи за 4 недели (с 10-й по 13-ю неделю 2019 года) в разрезе выбранного SKU для двух магазинов.

В таблице SALES_SKU продажи разбиты по неделям; необходимо суммировать продажи за 4 недели.

Для такого случая запрос будет выглядеть следующим образом: 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 Результат выполнения такого запроса выглядит следующим образом: Важно, что GROUP BY должен быть задан не только по SKU_ID, но и по STORE_ID, поскольку оба этих поля не используются в агрегирующей функции.

Если указать только GROUP BY SKU_ID, система выдаст ошибку, что STORE_ID не применён ни в GROUP BY, ни в какой-либо другой агрегирующей функции.

Подробнее о GROUP BY и возможность попробовать его в работе — по ссылке .