Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
РКН: https://clck.ru/3QREBc
Post #1025
2.15K
- 👍 20
- 🔥 9
- 🤝 5
- 👎 2
SQ @sql_ready
Showing posts older than #1027 · Back to latest







В этой шпаргалке собраны 8 методов для сбора, развертывания, подсчёта и преобразования массивов и строк. Короткие примеры помогут быстро ориентироваться в аналитических запросах и готовить данные для отчётов, API или BI-инструментов.CREATE TABLE Accounts (
id INT PRIMARY KEY,
name VARCHAR(50),
balance DECIMAL(10,2)
);
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; -- защита от грязных чтений
BEGIN;
SELECT balance FROM Accounts
WHERE id = 1 FOR UPDATE; -- эксклюзивная блокировка строки
UPDATE Accounts SET balance = balance - 500 WHERE id = 1;
UPDATE Accounts SET balance = balance + 500 WHERE id = 2;
COMMIT; -- сохраняем изменения
ROLLBACK; -- можно вызвать до COMMIT при ошибке
FOR UPDATE ставит row-level exclusive lock: другие транзакции ждут, пока вы завершите свою.




• Считаем общий running total по датам.
• Считаем накопительные суммы отдельно для каждого пользователя.
• Контролируем диапазон расчёта с ROWS BETWEEN.






• EXTRACT(DOW FROM play_time) — выделяем день недели прослушивания.
• EXTRACT(HOUR FROM play_time) — смотрим, в какие часы включают музыку.
• COUNT(*) + GROUP BY — считаем, сколько треков играло по жанрам и времени.
• ORDER BY — сортируем, чтобы увидеть пики популярности.