Пишем на SQL
1.94K subscribers
38 photos
6 videos
7 files
97 links
Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql
Download Telegram
Друзья, всех с наступающим новым годом!
От нас Вам самые добрые пожелания: успехов в профессиональной и личной сфере, новых горизонтов и внутренней гармонии!

Как мы работаем на праздниках:
1 - 3 января у нас выходной. Затем мы проверяем работы и отвечаем в режиме выходных и праздничных дней, то есть два раза в день (утром и вечером).

Спасибо Вам:
Помните, год назад, также, под новый год, я загадал, что к следующему новому году получится набрать 1.000 подписчиков на канале!  Благодаря Вам отчасти это получилось! Сейчас нас 700! Конечно, до 1.000 далеко, но ведь за год пришло 500 и это не мало!

На этот раз не буду загадывать:)
Буду стараться, как и сейчас, публиковать интересные задачи с реальной практики и с собеседований по SQL! Спасибо, что присылаете нам примеры и разрешаете их публиковать! Благодаря Вам, все могут попробовать свои силы! И спасибо за активное участие в опросах!

С наступающим! 🥂
🎉16🔥3🎄1
С наступившим Новым годом, друзья!

И вот первая SQL задача этого года!

В таблице CLIENTS пять строк. В первых двух строках в поле CLIENT_TYPE значение 1, ещё в двух строках в CLIENT_TYPE значение 2 и в последней строке поле CLIENT_TYPE не заполнено, то есть в последней строке в поле CLIENT_TYPE значение NULL.
Какое значение вернёт следующий запрос:

SELECT COUNT(DISTINCT CLIENT_TYPE) FROM CLIENTS
Anonymous Quiz
5%
1
40%
2
29%
3
5%
4
5%
5
8%
NULL
8%
Запрос "взорвётся" на ошибке, как фейерверк на новый год
👍2
Всем отличного начала нового года! Предлагаю решить похожую на предыдущую SQL-задачу, но в этот раз будет посложнее!

В таблице CLIENTS пять строк. В первых двух строках в поле CLIENT_TYPE значение 1, ещё в двух строках в CLIENT_TYPE значение 2 и в последней строке поле CLIENT_TYPE не заполнено, то есть в последней строке в поле CLIENT_TYPE значение NULL.

Есть два запроса:
1)
SELECT * FROM CLIENTS WHERE CLIENT_TYPE IN (1)
2)
SELECT * FROM CLIENTS WHERE CLIENT_TYPE NOT IN (2, NULL)
👍1
Результирующие наборы данных, полученные в результате выполнения этих запросов:
Anonymous Quiz
44%
Будут одинаковыми
56%
Будут разными
Всем отличного начала рабочей и учебной недели!

Мини-задачка по SQL. В таблице TEMP_TABLE один столбец и пять строк. Запрос SELECT 1 FROM TEMP_TABLE
Anonymous Quiz
28%
выведет данные из первого столбца для всех строк
14%
выведет просто цифру 1 (один раз)
40%
выведет пять строк, в каждой из которых будет цифра 1
17%
выдаст ошибку при запуске
Всем доброй пятницы!

Спасибо за активное участие в решении SQL-задач 😉

Запрос из предыдущей задачи выводит данные из таблицы TEMP_TABLE (так как SELECT..FROM TEMP_TABLE), поэтому будут выводиться строки из неё (все сколько есть). Но в блоке SELECT не указан ни один из (настоящих) столбцов таблицы. Не выбираются данные из какого-либо столбца.
В нашем примере указано что пока выводятся строки из таблицы TEMP_TABLE нужно выводить цифру 1, а не показывать данные какого-либо столбца.
Подробнее про псевдостолбцы: https://dzen.ru/a/Yo5F9Zm2iQ3edGxQ
👍6
Доброе утро, друзья!
Дана следующая таблица TEST_TABLE с тремя строками:
SELECT * FROM TEST_TABLE
ID   NAME
1     NULL
2     NULL
3     NULL
👍1
Каков будет результат следующего запроса: SELECT SUM(1) FROM TEST_TABLE
Anonymous Quiz
24%
Null
22%
1
1%
2
28%
3
0%
4
0%
5
7%
6
18%
Будет ошибка выполнения SQL-запроса
2024 уверенно начался! 🎉

Начнём год с отличных предложений!

Весь мощный курс по SQL и базам данных с нашей поддержкой и практикой в реальной базе данных можно купить по цене 5.900:
https://prime-soft.biz/pay/45

Большой практический курс программирования в PL/SQL (ORACLE), в котором мы будем много заниматься разработкой базы данных, будем автоматизировать бизнес задачи на примере банковской области всего за 11.900:
https://prime-soft.biz/pay/94

Оплату курса программирования в PL/SQL (ORACLE) можно разделить на два этапа (в начале обучения 5.990 и после 11го урока 5.990). Внести предоплату и начать обучение можно здесь:
https://prime-soft.biz/pay/194

Начать обучение на любом курсе мы можем сразу после оплаты! Обучение построено на заранее подготовленных видео уроках. После просмотра каждого урока нужно заходить в тестовую (учебную) базу данных, которую мы для Вас подготовим, и выполнять практическую часть! Благодаря подготовленным видеоурокам обучаться можно в любое время и ещё это позволило нам снизить стоимость обучения! 😌👌

Мы проверяем каждое решение, помогаем его оптимизировать и искать ошибки. Как только всё будет выполнено отлично, переходим к следующему уроку. И так - урок за уроком!

Желательно проходить минимум один-два урока в неделю, чтобы сохранить постоянное погружение в тему!

Буду рад ответить на дополнительные вопросы!
👍6
Ещё одна интересная SQL-задача

Напишите SQL-команду, которая вывела бы текст 'ДАННЫЕ' (или любой другой текст) вертикально. То есть каждую букву необходимо вывести в отдельной строке.

Решение, как всегда, напишу позже 😌
Media is too big
VIEW IN TELEGRAM
👍9😁7🔥2👎1
Здравствуйте, друзья!

Записал видео решение SQL-задачи в которой нужно было вывести текст по вертикали:

https://youtu.be/wrmFeFB8JJI
👍11
Доброе утро, друзья!

Начнём неделю с хорошей SQL задачки? Повторение - мать учения! ;)

Есть таблица Settings (Настройки), имеющая поля:
NAME  VARCHAR(20) NOT NULL PRIMARY KEY,
STR_VAL VARCHAR(200) NULL DEFAULT NULL.
Необходимо написать SQL-команду вставки новой строки в таблицу настроек с названием "email_alert" (значение столбца NAME) и значением "support@prime-soft.biz" (для столбца STR_VAL), но команда должна добавлять новую строку только в том случае, если настройки с таким NAME в таблице ещё не существует. Варианты решений задачи напишу чуть позже.
Доброй пятницы, друзья!

Спасибо за участие в решении задачи этого понедельника, в которой нужно написать команду вставки записи в таблицу настроек, если в ней настройки с таким названием ещё нет.

Вы написали отличный вариант решения и через NOT EXISTS, и с помощью LEFT JOIN-а и командой MERGE.

Рассмотрим способ через NOT EXISTS:

INSERT INTO Settings
  (NAME, STR_VAL)
SELECT 'email_alert', 'support@prime-soft.biz' FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM Settings WHERE NAME = 'email_alert');