en
Feedback
Пишем на SQL

Пишем на SQL

Open in Telegram

Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql Мой курс по SQL и базам данных: https://prime-soft.biz/courses/sql Связь со мной @iliahohlov

Show more
1 901
Subscribers
+124 hours
+17 days
No data30 days
Posts Archive
Отличная работа! Почти все решения верные (+ одно ещё на проверке). Спасибо Вам за активное участие в решении задачи. Приглашаю посмотреть варианты её решения (кому далось не легко): https://youtu.be/lYXRDsi0szU

Доброе утро, друзья! Сегодня предлагаю решить необычную задачу с собеседования. Каким SQL запросом/командой можно посчитать сколько раз в заданном тексте встречается конкретный символ, например точка? Решение напишу, как всегда, попозже🙂

Друзья, напоминаю, что сегодня ещё можно успеть записаться на наш курс по скидке: SQL. Базы данных. ORA­CLE. MS SQL Server. MySql https://prime-soft.biz/courses/sql 6.900 вместо 12.000 (скидка >40%) Программирование в PL/SQL (ORACLE) https://prime-soft.biz/courses/plsql 9.900 вместо 18.000 (скидка 45%) Программирование в SQL/PSM (MySql) https://prime-soft.biz/courses/mysql 9.900 вместо 12.000 (скидка почти 20%)

Вы правильно поняли, что сложность задачи заключается в том, что в поле BIRTHDATE лежит дата рождения сотрудника и у каждого сотрудника СВОЙ ГОД РОЖДЕНИЯ. Например, Иванов И.И. родился 09.12.1981 и если запускать запрос сейчас, то он должен быть отобран. Решение вида: select * from Persons where BIRTHDATE  between CURRENT_DATE and (CURRENT_DATE + INTERVAL '15 day') не подойдёт, так как BIRTHDATE не в диапазоне CURRENT_DATE and (CURRENT_DATE + INTERVAL '15 day') 09.12.1981 не в диапазоне 06.12.2023 - 21.12.2023 Обратите внимание на года! Нужно выбирать записи из таблицы без учёта года. Решения Александра и Полины будут работать правильно! Ещё одним решением задачи может быть следующий алгоритм: выбираем сотрудников, возраст которых (количество полных лет) сейчас отличается от возраста, который будет через 15 дней. Это означает, что за этот промежуток у сотрудника будет день рождения! Вычислить возраст (количество полных лет) можно разными способами. Вот пример: SELECT *    FROM PERSONS WHERE  TRUNC(MONTHS_BETWEEN(SYSDATE, BIRTHDATE)/12) <> TRUNC(MONTHS_BETWEEN(SYSDATE + 15, BIRTHDATE)/12)

Вот доработанный результат: select * from persons where case when to_date(replace(to_char(birthdate, 'dd.mm.yyyy'), to_char(extract(year from birthdate)), to_char(extract(year from sysdate))), 'dd.mm.yyyy') < trunc(sysdate) then to_date(replace(to_char(birthdate, 'dd.mm.yyyy'), to_char(extract(year from birthdate)), to_char(extract(year from sysdate)+1)), 'dd.mm.yyyy') else to_date(replace(to_char(birthdate, 'dd.mm.yyyy'), to_char(extract(year from birthdate)), to_char(extract(year from sysdate))), 'dd.mm.yyyy') end between trunc(sysdate) and trunc(sysdate)+14

Спасибо всем за старания и участие в решении этой задачи! Полина и Александр предложили верные, хотя и разные решения задачи. Александр, Ваше решение немного нужно доработать. В местах, где сравниваете результат работы текстовой функции REPLACE с датой, нужно результат работы REPLACE обернуть в to_date. Чтобы было сравнение одинаковых между собой типов данных.

Есть таблица сотрудников компании PERSONS, имеющая, среди прочих, столбец BIRTHDATE, в котором указана их дата рождения. Задача: написать запрос, отбирающий сотрудников, дни рождения которых выпадают на следующие 15 дней. Необходимо помнить, что если запрос будут запускать, например, 31 декабря, то должны вывестись сотрудники, чьи даты рождения выпадают с 31 декабря по 14 января. Напишите, пожалуйста, решение задачи в комментарии. В конце дня я напишу одно из возможных решений и отмечу сердечком правильные Ваши варианты.

Краткий план нашего интенсива по MySQL На примере создания базы данных для ERP-сисиемы управления складом и продажами научимся организовывать хранение данных, создавать, редактировать таблицы под разные виды использования. Разберём подробно движки таблиц, ключи, индексы, правила определения столбцов (чтобы избегать проблем на бою) и повторим нормализацию. Основной блок курса - это программирование на языке SQL/PSM. Научимся создавать хранимые процедуры и функции. Разберём циклы, курсоры, хэндлеры, научимся логировать выполнение программных модулей, а также возможные возникающие ошибки. Разберём новые возможности, которые появились в MySQL, позволяющие логировать выполнение и поиск исключений максимально быстро. Научимся создавать триггеры. Научимся правильно пользоваться транзакциями и освоим методы минимизации вероятности возникновения взаимных блокировок (deadlocks), как это делается в больших софтверных компаниях. Рассмотрим дополнительные особенности применительно к MySql. Научимся определять взаимные блокировки на бою и устранять их. Ещё один интересный блок: выполнение расчётов в SQL-запросах. Не всегда нужно прибегать к написанию алгоритмов на языке программирования. Очень большие возможности дают вычисления в запросах. Например как вставить даты в таблицу "шахматкой", выбрать заказы, в которых пропущена нумерация позиций или распределить товары между складами равномерно, принимая различные параметры в расчёт. Это всё можно сделать одним запросом, одной командой SQL! В MySQL нет аналитических функций (или пока нет), но вычисления в запросах дают даже более гибкий функционал. Последний небольшой, но тоже важный блок - это конфигурация MySql сервера. Стандартные значения параметров сервера годятся для небольших сайтов, интернет-магазинов, а для более серьёзной нагрузки установка правильных значений играет очень важную роль в распределении ресурсов. Научимся конфигурировать параметры СУБД под разные задачи. Для участников курса, по желанию (в рамках дополнительной практической нагрузки), можно будет поучаствовать в разработке нашего нового проекта SQL-Learn. Мы создадим несколько хранимых модулей, выполняющих часть бизнес логики. Вместе предварительно обсудим максимально оптимальную реализацию, напишем и протестируем программный код! Созданный функционал будет использоваться на сайте sql-learn.com и в одноимённом мобильном приложении. Выход приложения готовится весной 2024 года.

Друзья, напоминаю, что до 8го декабря (ещё 3 дня) действует хорошая скидка на наши курсы: SQL. Базы данных. ORA­CLE. MS SQL Server. MySql https://prime-soft.biz/courses/sql 6.900 вместо 12.000 (скидка >40%) Программирование в PL/SQL (ORACLE) https://prime-soft.biz/courses/plsql 9.900 вместо 18.000 (скидка 45%) Программирование в SQL/PSM (MySql) https://prime-soft.biz/courses/mysql 9.900 вместо 12.000 (скидка почти 20%) 💻

Есть таблица GOODS, имеющая, среди прочих, столбец GOOD_TYPE, определённый как INT(10) NOT NULL DEFAULT 0. Всё ли записи из таблицы GOODS будут выбраны запросом ниже? SELECT * FROM GOODS WHERE COALESCE(NULLIF(GOOD_TYPE, -1), 0) <> -1
Anonymous voting

Всем доброй пятницы и хороших выходных! По традиции, немного юмора:  Microsoft провела анализ и выяснила, что русские читают само лицензионное соглашение - менее 1 секунды 🙂🙂🙂 Никакой другой промежуток времени не обладает такой вариабельностью, как одна условная минута Майкрософта.

Доброе утро, друзья! Интенсив разработки в MySQL начинаем с 8 января! Формат обучения: онлайн (вебинары) 12 уроков с продолжительностью минимум по 1.5 часа. График: пн и чт с 19:30 и сб с 9:30. Вебинары будут доступны в записи. + закрытая группа в Телеграмм с обсуждением и помощью решения д/з. Узнать подробнее и записаться можно здесь: https://prime-soft.biz/courses/mysql Чёрная пятница: до 8 декабря курс будет стоить 9.900, потом 12.000 р.

Спасибо за участие и присланные решения! Лайком я отметил те, которые дадут правильный результат! Конечно, самым простым решением будет группировка по полю (или набору полей), по которому определяется уникальная ли запись или такая уже есть, с подсчётом количества, и потом используем HAVING чтобы оставить в результате те, где полученное количество более одного. Приведу источник: https://de.education-wiki.com/9404113-sql-interview-questions Вариант с использованием аналитических функций тоже допустим, но сложноват ☺️

Здравствуйте, друзья! Нашёл на немецком сайте задачку по SQL. Подобные мы уже решали, предлагаю повторить! Уровень сложности:
Здравствуйте, друзья! Нашёл на немецком сайте задачку по SQL. Подобные мы уже решали, предлагаю повторить! Уровень сложности: базовый. Есть таблица (см.рисунок). Нужно найти повторяющиеся имена и вторым столбцом вывести цифру сколько раз повторяется имя. Жду Ваше решение до вечера! Вечером решим вместе!

Спасибо Вам большое за ответы по программе конференций! Вы не только помогли с выбором, но и подсказали несколько новых интересных инструментов! 🤗🎉

Здравствуйте, друзья! Всем хорошей пятницы и наступающих выходных! Мы получили ещё один прекрасный отзыв! С радостью делимся! *** Вам спасибо, что сопровождали на этом пу­ти. Очень рад, что нашел ваш курс, все очень понятно объясня­лось. До вас я считал что программирован­ие это не мое от сло­ва совсем, но дело было не во мне, а в подаче материала. Спа­сибо!

Друзья, порекомендуйте, пожалуйста, систему видеоконференций! Важно наличие: - демонстрации экрана; - чата; - возможности передавать слово на участника; - видеозаписи; - одновременное участие не менее 30 человек.
Anonymous voting

Все ли строки из таблицы VOUCHERS будут отобраны следующим запросом? SELECT * FROM VOUCHERS WHERE ID_CODE = 1 UNION ALL SELECT * FROM VOUCHERS WHERE ID_CODE <> 1
Anonymous voting

Повторение - мать учения! Известная поговорка🙂 Скажите, возвращаетесь ли вы к SQL задачам, которые я присылал ранее и прорешиваете ли их повторно? Важно повторять решения задач, особенно тех, где совершили ошибку. Ниже я размещу одну из прошлых задач, на которой примерно половина ответила не правильно. Предлагаю решить её ещё раз! 🙂

Интересен интенсивный курс по "Разработке в MySql"?
Anonymous voting