Сегодня создаём простого бота, который “понимает” текст запроса и отвечает на сообщения пользователя.
В этом посте:
• Храним шаблоны фраз и ответы в таблице responses;
• Используем ILIKE, чтобы находить ключевые слова в сообщении;
• Возвращаем лучший ответ по приоритету совпадений.
Приём показывает, что SQL способен работать не только с числами, но и с текстом, превращаясь в мини-экспертную систему.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27❤9👍7🤝1
В этой шпаргалке собраны основные приёмы работы с временными данными в SQL Server: создание, заполнение, очистка и удаление временных таблиц, а также использование табличных переменных. Эти методы помогают выполнять промежуточные расчёты, строить отчёты и оптимизировать сложные запросы без изменения основной схемы базы.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍11❤9
WITHIN GROUP — агрегаты с управляемым порядком!
Обычные агрегаты в SQL не гарантируют порядок входных данных, что важно для медиан и упорядоченных списков. Конструкция
Пример: соберём список продуктов по категории в порядке убывания продаж:
В отличие от
Пример вычисления порогового значения 90% по сумме заказов по регионам:
Медиана чека по каждому магазину:
Такой подход может быть проще и эффективнее, чем использование
🔥 Используйте
➡️ SQL Ready | #практика
Обычные агрегаты в SQL не гарантируют порядок входных данных, что важно для медиан и упорядоченных списков. Конструкция
WITHIN GROUP решает это, задавая порядок элементов внутри агрегатной функции.Пример: соберём список продуктов по категории в порядке убывания продаж:
SELECT
category_id,
LISTAGG(product_name, ', ') WITHIN GROUP (ORDER BY total_sales DESC) AS top_products
FROM product_sales
GROUP BY category_id;
В отличие от
ARRAY_AGG(product_name ORDER BY ...), синтаксис WITHIN GROUP используется для ordered-set функций, а не для любых агрегатов.Пример вычисления порогового значения 90% по сумме заказов по регионам:
SELECT
region_id,
PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY total_amount) AS p90_sales
FROM orders
GROUP BY region_id;
PERCENTILE_CONT() и PERCENTILE_DISC() позволяют вычислять медиану или любое процентное значение без оконных функций.Медиана чека по каждому магазину:
SELECT
store_id,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total_amount) AS median_check
FROM orders
GROUP BY store_id;
Такой подход может быть проще и эффективнее, чем использование
NTILE() или RANK() в оконных выражениях.WITHIN GROUP, когда важен порядок в агрегатах.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍8❤7
SQL умеет не только суммировать и фильтровать данные, он способен показывать насколько сильно одно влияет на другое.
В этом посте:
• Находим средние значения метрик;
• Считаем ковариацию и дисперсии;
• Собираем финальную формулу корреляции прямо в запросе.
Это помогает быстро проверять гипотезы, оценивать результаты и находить зависимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍14❤8🤝1
Хочешь узнать, когда именно заказ сменил статус?
Используй
Сравни текущее значение с предыдущим:
Получается булево поле —
Хочешь вывести только моменты изменения, просто оберни в подзапрос:
🔥 Это основа для аудита изменений и аналитики событийных логов.
➡️ SQL Ready | #совет
Используй
LAG(), она возвращает значение из предыдущей строки в рамках группы:LAG(status) OVER (PARTITION BY order_id ORDER BY updated_at)
Сравни текущее значение с предыдущим:
status <> LAG(status) OVER (...)
Получается булево поле —
true, когда статус поменялся.Хочешь вывести только моменты изменения, просто оберни в подзапрос:
SELECT *
FROM (
SELECT order_id, status, updated_at,
status <> LAG(status) OVER (PARTITION BY order_id ORDER BY updated_at) AS changed
FROM order_status_log
) t
WHERE changed;
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍10❤8
В этой шпаргалке собраны основные приёмы работы с JSON и JSONB в PostgreSQL: доступ к элементам, извлечение вложенных данных, обновление значений, создание объектов, раскрытие массивов, форматирование и проверка вхождения. Эти инструменты позволяют удобно хранить и обрабатывать структурированные данные прямо в базе.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤9🔥9😁1