Пишем на SQL
1.9K subscribers
44 photos
7 videos
12 files
122 links
Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql

Мой курс по SQL и базам данных:
https://prime-soft.biz/courses/sql

Связь со мной @iliahohlov
Download Telegram
👍5
После большого количества изменений в таблицы БД чаще всего быстрее выполнится команда
Anonymous Quiz
71%
COMMIT
29%
ROLLBACK
2😁2🔥1
Всем привет!

Приглашаю на трёхдневный SQL тренинг-практику по анализу данных!

1. Научимся проводить анализ возможных результатов при соединении таблиц разными типами джоинов (решение классических задач собеседования, поиск минимального и максимального количества строк).
2. Прорешаем задачи на новой базе с больше чем с одним соединением один-ко-многим. Уделим внимание способам решения в зависимости от требований.
3. Прорешаем задачи на группировку данных, использование HAVING.
4. Повторим использование подзапросов в блоках WHERE, SELECT, FROM и JOIN, чтобы мы могли легко их использовать при решении ежедневных задач.
5. Повторим EXISTS/NOT EXISTS и IN/NOT IN, вспомним что когда эффективнее использовать.
6. Повторим использование CTE.
7. Изучим/вспомним операторы ANY и ALL для работы с подзапросами. Посмотрим какие задачи ими легко решать.
8. Разберем использование оператора CASE в разных блоках SQL команд.
9. Научимся пользоваться оператором PIVOT.
10. Повторим использование аналитических (оконных) функций для решения разных задач: ранжирования и поиска top n строк, анализа данных разных временных интервалов и работа с пропусками данных, расчета скользящего среднего и многое другое.

Заниматься будем через Zoom. Всего три он-лайн встречи по часу.
График обучения: сб, вс (10:30 - 11:30) + сб.
Начинаем: 20 декабря!

Стоимость: 1.900 ₽
Записаться и оплатить тут.
1
Таблица CLIENTS имеет структуру:
CREATE TABLE CLIENTS (
ID INT AUTO_INCREMENT PRIMARY KEY,
DATE_CREATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
NAME VARCHAR(100),
PHONE VARCHAR(20),
NOTE VARCHAR(500));
В таблице docs четыре строки:
id doc_info
1 p-file
2 pt-file
3 pc-file
4 t-file
Что будет в результате выполнения запроса?
select count(1) from docs where doc_info like 'p%' and doc_info not like 'pt%'
Anonymous Quiz
5%
0
15%
1
63%
2
8%
3
2%
4
8%
SQL-ошибка
Всем привет!

Нашёл интересную задачу по SQL в интернете.

Схема БД интернет-магазина содержит таблицы:
Company – производители телефонов
Phone – возможные для приобретения телефоны. Необходимо составить запрос поиска производителя телефона с наибольшей средней стоимостью телефона этого производителя.
👍1
Как мы работаем в праздники:

С 5 января мы онлайн! Будем полностью поддерживать Вас в обучении: проверять решения самостоятельных работ и отвечать на любые вопросы!
👍5
Поздравляем всех с новым этапом в личной и профессиональной жизни!

С Новым годом и Рождеством! 🎉

Спасибо всем, кто обучается, обучался или начинает обучаться с нами! Постоянных, систематических успехов в освоении новых знаний и умений! 💪
Будем рады Вашим обращениям и после обучения! Обращайтесь за советами и вопросами 🤗
🎄17
Всем привет! 👋

Поздравляем с началом нового рабочего (и учебного) года! Успехов и достижений! 💻

Знаете, что в базах данных, наряду с остальными типами объектов, могут быть ещё и синонимы (synonym)?

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

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

Самый главный плюс использования синонимов - это абстракция и независимость от изменений. Если реальная таблица переезжает в другую схему, нам нужно будет не переписывать все запросы, а всего лишь создать синоним с именем таблицы и в нем указать реальное расположение таблицы! 👌

Все SQL-запросы и команды к этой таблице продолжат работать без изменений. Здорово, правда? И это лишь одно из назначений синонимов! 💪
👍9
В таблице DOCS две строки:
ID DOCNUM
1 ААА
2 ааа
Сколько строк вернет запрос: SELECT * FROM DOCS WHERE '%' LIKE DOCNUM
Anonymous Quiz
57%
0
6%
1
35%
2
3%
3
🔥2🤔2
Всем привет!

Есть запрос, выводящий операции по некоторому счету за период:

SELECT t.DOCDATE, t.DOCNUM, t.AMOUNT
FROM V_SVERKA_2601 t
WHERE t.ACCDBT LIKE '51%'
ORDER BY t.DOCDATE ASC
UNION ALL
SELECT t.DOCDATE, t.DOCNUM, t.AMOUNT
FROM V_SVERKA_2601 t
WHERE t.ACCCRD LIKE '51%'
ORDER BY t.DOCDATE DESC
Привет шахматистам!

Кто справится с задачей: ход белых, нужно поставить мат в один ход. Попробуйте без ИИ.
👍3
Всем привет!

Встречались с блокировками во время прогрузки и установки пакетов? Когда пытаешься прогрузить новую версию пакета, а он постоянно кем то используется и заблокирован: то кто-то вызывает функцию пакета, то он залочен джобом (который тоже вызывает какую-то его процедуру).

Чтобы суметь таки прогрузить пакет на разработческой базе или тестовой (не на проде) можно запустить его компиляцию, далее с помощью сессий, узнать свой sid (например, это можно сделать в PL/SQL Developer-е в окне Tools -> Sessions), подставить его в этот скрипт в переменную v_mister_president_session и запустить его. Скрипт будет находить всех, кто блокирует Вашу сессию и будет убивать (kill) их. А ещё некоторое время будет проверять, не появился ли кто-то еще, кто хочет Вас заблокировать. Как только в течение некоторого времени больше не будет появляться сессий, которых необходимо отстреливать, скрипт сообщит о завершении работы! Разумеется, у пользователя, запускающего скрипт, должны быть права на снятие сессий.

#oracle #plsql #kill_sessions
👍42
Таблица CLIENTS имеет структуру:
CREATE TABLE CLIENTS (
ID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(100) NOT NULL,
INN VARCHAR(12),
KPP VARCHAR(9),
DESCRIPTION VARCHAR(100)
);

Таблица INVOICES имеет структуру:
CREATE TABLE INVOICES (
ID INT PRIMARY KEY AUTO_INCREMENT,
DATE_INV DATE NOT NULL,
NOM_INV VARCHAR(20) NOT NULL,
AMOUNT DECIMAL(17, 2),
ID_CLIENT INT NOT NULL,
DESCRIPTION VARCHAR(100),
FOREIGN KEY (ID_CLIENT) REFERENCES CLIENTS(ID)
);

Есть два запроса:
a)
SELECT c.*
FROM CLIENTS c
LEFT JOIN INVOICES i
ON c.ID = i.ID_CLIENT
WHERE i.ID IS NULL

b)
SELECT *
FROM CLIENTS c
WHERE NOT EXISTS (SELECT *
FROM INVOICES i
WHERE i.ID_CLIENT = c.ID)
2🤔1