SQL Ready | Базы Данных
10.4K subscribers
659 photos
28 videos
2 files
330 links
Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/sql_ready
加入频道
😁44🔥10👎2
Materialized Views — решение для сложных аналитических запросов!

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

Синтаксис создания представления:
CREATE MATERIALIZED VIEW daily_sales_summary AS


Далее мы по сути пишем обычный запрос с учетом данных, которые нам понадобятся в нашем представлении:
SELECT
DATE_TRUNC('day', order_date) AS sale_day,
SUM(amount) AS total_sales
FROM orders


Теперь выберем записи о продажах за последний месяц:
WHERE created_at > NOW - INTERVAL '30 days'


DATE_TRUNC используем для округления момента продажи до дня, чтобы затем группировать продажи по дням:
GROUP BY DATE_TRUNC('day', order_date);


Из минусов materialized views — необходимость их постоянного обновления, иначе данные могут быть неактуальными:
REFRESH MATERIALIZED VIEW daily_sales_summary;


Materialized views физически сохраняются на диске и занимают место. Используйте этот инструмент, если ваши аналитические запросы действительно сложные и выполняются медленно.

SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥42
This media is not supported in your browser
VIEW IN TELEGRAM
SQL Murder Mystery — это интерактивная игра, в которой нужно использовать SQL-запросы для расследования виртуального убийства.

Игрокам предоставляется доступ к базе данных с информацией о преступлении, и они должны применять свои навыки работы с SQL для поиска улик, анализа данных и выявления преступника.


📌 Ссылочка: mystery.knightlab

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍5
🖥 INSERT ON CONFLICT — решаем конфликты элегантно!

INSERT ON CONFLICT очень полезен в случаях, когда нужно вставить новую запись в таблицу, но если запись с таким же уникальным ключом уже существует — нужно обновить эту запись.

Следует использовать:
• Для сокращения запросов — когда вместо двух запросов (SELECT + INSERT/UPDATE) нужно выполнить только один.

Для оптимизации — производительности и минимизации количества запросов к базе данных.

Для конкурентный доступа — когда нужно избежать проблем с конкурентным доступом.


🔥 — если узнал новое
🤝 — если уже пользовался

SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🤝10👍5👎21
😁24🔥15👎3
🖥 Завез вам шпаргалку по регулярочкам в SQL: оператор REGEXP для точечного поиска по шаблону!

REGEXP — инструмент, который удобно использовать, если требуется сложный и гибкий поиск по шаблону. Например, поиск по нескольким условиям или использование специальных символов и диапазонов.


SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍106🤝1
🖥 Полезнейшая статья от TheCode, где показано, как собрать полноценный проект с использованием SQLite!

В этой статье:

• SQLite в браузере с помощью sql.js
• Веб-приложение с локальным сохранением данных
• Интерфейс с поддержкой SQL-запросов

🔊 Советую прочитать на TheCode!


➡️ SQL Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥5
ALL и ANY в SQL — учимся использовать для сравнения с подзапросами!

Эти операторы предназначены для сравнения результатов одного SELECT с результатами второго SELECT из подзапроса, что может быть удобно в некоторых случаях: если подзапрос возвращает небольшое количество строк или когда нужно сравнить значение хотя бы с одним значением из подзапроса.

Представим, что нам нужно найти все продукты, цена которых выше, чем цена любого продукта в категории Discount:
SELECT product, price 
FROM products
WHERE price > ALL (SELECT price FROM products WHERE category = 'Discount');


Теперь найдем всех клиентов, заказавших хотя бы один продукт с ценой выше 1000 рублей:
SELECT DISTINCT customer_id 
FROM orders
WHERE product_id = ANY (SELECT product_id FROM products WHERE price > 1000);


И найдем всех клиентов, которые заказывали продукты из определенной категории:
SELECT DISTINCT customer_id
FROM orders
WHERE product_id = ANY (SELECT product_id FROM products WHERE category = 'Electronics');


🔥 Но помните, что использование ALL и ANY возможно только с подзапросами и может быть неэффективным, если подзапрос возвращает большое количество строк.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍10🔥4
👍75🔥4👎1
Что же выведет консоль?
Anonymous Quiz
58%
A
34%
B
6%
C
2%
D
👍144🔥4👎2
🖥 SQL: системное понимание и практика

Плейлист для тех, кто хочет не просто писать запросы, а понимать, как устроены базы данных. Реляционная модель, поведение SQL-операторов, индексы, нормализация, ACID, CRUD, NoSQL — всё по делу и с акцентом на логику работы с данными.

Ссылочка на плейлист: YouTube 🖤


SQL Ready | #курс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
🖥 Находим часы максимальной активности заказов — полезный приём для анализа поведения пользователей и оптимизации продаж!

Нужно найти пиковые часы заказов по времени суток. Для этого воспользуемся функцией EXTRACT, чтобы вытащить час из даты заказа, и посчитаем количество заказов в каждом часе.

В этой задаче:
• EXTRACT(HOUR FROM ...) — вытаскиваем час из order_date.

• GROUP BY + COUNT — группируем по часу и считаем, сколько заказов было.

• ORDER BY — сортируем по убыванию, чтобы получить часы с наибольшей активностью.


🔥 — если попробуешь повторить
🤝 если уже
делал подобное

SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍7🤝53👎2