Пишем на SQL
Открыть в Telegram
Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql Мой курс по SQL и базам данных: https://prime-soft.biz/courses/sql Связь со мной @iliahohlov
Больше1 900
Подписчики
-124 часа
+17 дней
-130 день
Архив постов
1 901
Всем доброго понедельника!
Предлагаю ещё одну интересную задачу по SQL.
В базе данных есть таблица TMP_TABLE, имеющая всего два столбца и содержащая следующие данные:
TMP_TABLE
column1 column2
-----------------------------------------
12 12
NULL 13
12 14
NULL NULL
13 15
1 901
Друзья, всем привет!
Современный мир очень быстро развивается и требует постоянно соответствующих знаний и умений!
Знание языка SQL и навыки работы с базами данных сейчас одни из самых востребованных! Бизнес почти всех компаний от маленьких до больших использует базы данных! А SQL - это единственный язык, с помощью которого происходит работа с базами данных!
Мы подготовили максимально полную программу с максимально простым объяснением, чтобы загрузить в тебя всего за 10 дней максимум знаний и умений! Программа максимум :)
Итак, как будет проходить обучение:
- 10 уроков со мной в режиме онлайн минимум по 1.5 часа (обучаться будем через Zoom);
- Домашние самостоятельные задания после каждого урока. Вам будет нужно один на один остаться с базой данных (которую мы подготовим вместе) и попробовать выполнить практическую работу;
- Начало уроков будет с проверки самостоятельных задач. Разберём как Вы справились с "домашкой", посмотрим что не получилось и что можно оптимизировать;
- На он-лайн уроках будем работать! Не просто объясню и обучу, но и будем вместе решать задачи!
- Общение и дополнительные вопросы и по домашней работе и нет - в закрытой группе Телеграмм. Здесь же буду выкладывать записи эфиров;
- Обучение SQL и навыкам работы с базами данных будет на примере СУБД PostgreSQL;
- Сертификат по завершению обучению + помощь в составлении резюме.
Полная программа курса, записаться и оплатить можно здесь: https://prime-soft.biz/courses/postgresql
График обучения:
- вторник и четверг 19:30 (Мск);
- суббота 9:30 (Мск).
Начинаем 20 августа!
Повторю, что написал выше: весь мир использует базы данных, а язык SQL - это единственный язык работы с базами данных! И, более того, это самый простой способ войти в айти, если Вы ещё не думаете над этим.
Дополнительные вопросы по обучению оставляйте в комментариях под этим постом!
1 901
Всем доброго понедельника!
А вот и ещё одна небольшая задача по SQL🙂👇
В таблице INVOICES две строки. В первой строке в столбце QTY число 25, во второй строке в этом же столбце лежит NULL.
1 901
Оператор DISTINCT оставляет в результирующей таблице строки с неповторимым набором значений во всех выводимых (командой SELECT) столбцах. Несмотря на то, что в столбце NAME для всех выводящихся строк значение одинаковое, в столбце ID - значение для этих строк, разное (т.к. столбец ID определён как первичный ключ). Оператор DISTINCT убрал бы вторую строку (и последующие), если бы совпали значения по всем выводящимся столбцам.
1 901
Сколько строк вернёт следующий запрос?
SELECT DISTINCT ID, NAME FROM PERS WHERE NAME = 'Иванов Иван Иванович'
1 901
Всем привет!
А вот и задача на этот понедельник! По сложности назначаю 1 звёздочку! Проверьте себя, ничего не забыли из основы основ? И внимательно читаем условие задачи, ато обидно будет ответить не правильно на достаточно простой задаче 😉
Таблица PERS определена следующим образом:
(ID NUMBER NOT NULL PRIMARY KEY,
NAME VARCHAR(100) NOT NULL)
Запрос
SELECT COUNT(*)
FROM PERS
WHERE NAME = 'Иванов Иван Иванович'
возвращает число 2.
1 901
Доброго дня!
Спасибо всем, кто решил обучаться с нами на наших курсах "SQL и базы данных" и "Программирование в PL/SQL (ORACLE)"!
Очень рады пройти с Вами подготовленную программу! Мы постараемся, чтобы обучение было максимально полезно и интересно!
Напоминаю, что сегодня еще можно записаться на наши курсы по отличной цене (подробности выше)! Предложение действует до завтра! Вдруг кто-то забыл, напоминаю 🙂
1 901
В каком порядке выводятся данные, получаемые SQL-запросом, если в запросе не указан ORDER BY?
- данные выводятся в таком порядке, в котором их проще вывести для СУБД. При отсутствии блока ORDER BY один и тот же запрос, запускаемый в разное время, даже может выводить одни и те же данные в разном порядке.
1 901
Здравствуйте, друзья!
Есть желающие пройти с нами курс по SQL и базам данных по супер цене?
Всё обучение на нашем мощном курсе предлагаем за 7.750 рублей!
- Полностью весь курс
- Реальная база данных (не тренажёр);
- И наше сопровождение на протяжении всего курса (проверка решений самостоятельных работ, их оптимизация, решение ошибок, ответы на любые вопросы).
Предложение будет действовать в течение пяти дней. Записаться и оплатить можно здесь:
https://prime-soft.biz/pay/45
И ещё приглашаем на курс Программирования в PL/SQL (ORACLE)! В течение следующих пяти дней также будет действовать отличная цена: 9.900 рублей за весь курс с нашим сопровождением!
Записаться и оплатить можно здесь:
https://prime-soft.biz/pay/94
И самое специальное предложение: оба курса за 14.990 рублей. Записаться и оплатить можно здесь:
https://prime-soft.biz/pay/210
Если не знаете какой курс выбрать - оставьте нам заявку! Мы свяжемся и поможем определить нужный курс обучения: https://prime-soft.biz/callback
Будем очень рады пройти с Вами один или оба курса по базам данных!
Будем Вас ждать!
1 901
Сколько строк вернёт следующий запрос:
SELECT * FROM VOUCHERS WHERE ID_CODE IN (1, NULL)
1 901
Сколько строк вернёт следующий запрос:
SELECT * FROM VOUCHERS WHERE ID_CODE IN (1, NULL)
1 901
Усложненная версия предыдущей задачи
В базе данных есть таблица VOUCHERS, в которой, среди прочих, есть столбец ID_CODE, определённый как NUMBER (с возможностью сохранения значений NULL).
В таблице всего пять строк.
У трёх строк значение 1 (один) в этом столбце, и ещё у двух строк значение в этом столбце NULL.
1 901
Сколько строк вернёт следующий запрос:
SELECT * FROM VOUCHERS WHERE ID_CODE IN (1, NULL)
1 901
В базе данных есть таблица VOUCHERS, в которой, среди прочих, есть столбец ID_CODE, определённый как INT NOT NULL.
В таблице всего три строки со значением 1 (один) в этом столбце, у остальных строк в этом столбце другое значение.
1 901
Всем доброго вечера!
Наконец, нашёл время разобрать решение предыдущей задачи, присланное Виталием!
Виталий, спасибо за участие!
Изначально собирался подготовить небольшое видео разбора решения (именно видео), но, в итоге, решил ограничиться текстовым вариантом. Надеюсь не повлияет на восприятие.
Начинается решение с созданием CTE (временной таблицы данных, которой будет дано собственное имя и которая будет "жить" пока выполняется скрипт получения данных). Про CTE я уже записывал небольшое видео здесь: https://youtu.be/xuoIfDBKI7I
Инструкция WITH отбирает в набор данных счета, с даты открытия по дату закрытия которых прошло более одного дня. При отсутствии даты закрытия рассчитывается по текущую дату. И называется это потом "t".
И вот дальше самое интересное 😀 к полученному набору данных "t" коннектятся данные этого же набора данных своего клиента по количеству раз, равным количеству месяцев, на протяжении которых был открыт счёт. Может быть здесь немного переделать и соединять по идентификатору счета (должен же быть такой столбец в таблице счетов)?
Очень любопытно: ORACLE оценил план выполнения запроса как достаточно нетрудоёмкий, но я не смог дождаться результата выполнения запроса (ждал более 10ти минут). Я бы, всё же, немного переделал запрос по части размноживания (дублирования) строк каждого счета по количеству месяцев в котором он был открыт на способ с помощью обычного джоина. К таблице счетов, или CTE с именем "t" можно приджоинить динамически созданную таблицу месяцев. К каждому счету можно приджоинить столько месяцев, сколько счёт был открыт. То есть идея такая же, но использование обычного джоина заместо сложного CONNET BY заметно (иногда очень заметно) упростит выполнение запроса!
Спасибо большое за внимание к задаче и участие в её решении!
1 901
Всем доброго вторника!
По предыдущей задаче скоро возьму и сделаю видеоразбор единственного присланного решения! Интересное решение придумал Виталий! Кто-то попытался вникнуть в то, как была решена задача? 😉
Мощно, да?! Скоро сделаю видеоразбор!
1 901
Доброе утро, друзья!
Всем хорошего понедельника и продуктивной недели!
Спасибо, что продолжаете делиться интересными задачами по SQL.
Предлагаю поучаствовать в решении ещё одной задачи, которая поступила в прошлую пятницу. Текст задачи немного переделал и конкретезировал.
Дана таблица ACCOUNTS, содержащая данные о счетах клиентов (у клиента может быть несколько счетов). Среди прочих, в таблице ACCOUNTS есть следующие важные для нас столбцы:
ID_CLIENT - идентификатор клиента
DT_OPEN – дата открытия счета
DT_CLOSE – дата закрытия счета
Если дата закрытия счёта не заполнена (содержит значение NULL), то счет открыт на текущий день.
Требуется написать SQL-запрос, который должен посчитать количество клиентов с открытым счетом помесячно. Учитывать только счета, которые были открыты более одного дня. При решении нельзя использовать оператор DISTINCT.
Если счёт открыт в марте и закрыт в мае, то клиент с таким счетом должен войти в количество клиентов с открытым счетом во всех месяцах с марта по май включительно.
Отчёт должен быть вида:
Год Месяц Колво откр.клиентов
2005 январь 23
2005 февраль 89
2005 март 167
....
Попозже опубликую один из вариантов решения!
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
