Спасибо за участие и присланные решения! Лайком я отметил те, которые дадут правильный результат!
Конечно, самым простым решением будет группировка по полю (или набору полей), по которому определяется уникальная ли запись или такая уже есть, с подсчётом количества, и потом используем HAVING чтобы оставить в результате те, где полученное количество более одного.
Приведу источник:
https://de.education-wiki.com/9404113-sql-interview-questions
Вариант с использованием аналитических функций тоже допустим, но сложноват ☺️
Конечно, самым простым решением будет группировка по полю (или набору полей), по которому определяется уникальная ли запись или такая уже есть, с подсчётом количества, и потом используем HAVING чтобы оставить в результате те, где полученное количество более одного.
Приведу источник:
https://de.education-wiki.com/9404113-sql-interview-questions
Вариант с использованием аналитических функций тоже допустим, но сложноват ☺️
Education-WIKI.com
Fragen und Antworten zu SQL-Vorstellungsgesprächen (Aktualisiert für 2019) | Entwicklung des Unternehmertums 2025
In diesem Artikel haben wir alle SQL-Interview-Fragen zusammengestellt, die häufiger gestellt werden, mit ihren detaillierten Antworten darauf.
❤3
Доброе утро, друзья!
Интенсив разработки в MySQL начинаем с 8 января! Формат обучения: онлайн (вебинары) 12 уроков с продолжительностью минимум по 1.5 часа. График: пн и чт с 19:30 и сб с 9:30. Вебинары будут доступны в записи. + закрытая группа в Телеграмм с обсуждением и помощью решения д/з.
Узнать подробнее и записаться можно здесь: https://prime-soft.biz/courses/mysql
Чёрная пятница: до 8 декабря курс будет стоить 9.900, потом 12.000 р.
Интенсив разработки в MySQL начинаем с 8 января! Формат обучения: онлайн (вебинары) 12 уроков с продолжительностью минимум по 1.5 часа. График: пн и чт с 19:30 и сб с 9:30. Вебинары будут доступны в записи. + закрытая группа в Телеграмм с обсуждением и помощью решения д/з.
Узнать подробнее и записаться можно здесь: https://prime-soft.biz/courses/mysql
Чёрная пятница: до 8 декабря курс будет стоить 9.900, потом 12.000 р.
prime-soft.biz
Prime | Обучение программированию в MySQL (SQL/PSM)
Уроки и курсы SQL, MySQL, Базы данных, Программирование с практическими файлами и материалом.
Всем доброй пятницы и хороших выходных!
По традиции, немного юмора:
Microsoft провела анализ и выяснила, что русские читают само лицензионное соглашение - менее 1 секунды
🙂🙂🙂
Никакой другой промежуток времени не обладает такой вариабельностью, как
одна условная минута Майкрософта.
По традиции, немного юмора:
Microsoft провела анализ и выяснила, что русские читают само лицензионное соглашение - менее 1 секунды
🙂🙂🙂
Никакой другой промежуток времени не обладает такой вариабельностью, как
одна условная минута Майкрософта.
😁8🤷♂1👍1💩1🥴1
Есть таблица GOODS, имеющая, среди прочих, столбец GOOD_TYPE, определённый как INT(10) NOT NULL DEFAULT 0. Всё ли записи из таблицы GOODS будут выбраны запросом ниже?
SELECT * FROM GOODS WHERE COALESCE(NULLIF(GOOD_TYPE, -1), 0) <> -1
SELECT * FROM GOODS WHERE COALESCE(NULLIF(GOOD_TYPE, -1), 0) <> -1
Anonymous Quiz
45%
Да, запрос выберет все записи из таблицы GOODS
55%
Нет, запрос выберет не все записи из таблицы GOODS
Друзья, напоминаю, что до 8го декабря (ещё 3 дня) действует хорошая скидка на наши курсы:
SQL. Базы данных. ORACLE. 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%)
💻
SQL. Базы данных. ORACLE. 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%)
💻
prime-soft.biz
Prime | SQL. Базы данных. ORACLE, MS SQL Server, MySQL
Уроки и курсы SQL, ORACLE, MS SQL Server, MySQL, Базы данных. Практические файлы и материал.
Краткий план нашего интенсива по MySQL
На примере создания базы данных для ERP-сисиемы управления складом и продажами научимся организовывать хранение данных, создавать, редактировать таблицы под разные виды использования. Разберём подробно движки таблиц, ключи, индексы, правила определения столбцов (чтобы избегать проблем на бою) и повторим нормализацию.
Основной блок курса - это программирование на языке SQL/PSM. Научимся создавать хранимые процедуры и функции. Разберём циклы, курсоры, хэндлеры, научимся логировать выполнение программных модулей, а также возможные возникающие ошибки. Разберём новые возможности, которые появились в MySQL, позволяющие логировать выполнение и поиск исключений максимально быстро. Научимся создавать триггеры.
Научимся правильно пользоваться транзакциями и освоим методы минимизации вероятности возникновения взаимных блокировок (deadlocks), как это делается в больших софтверных компаниях. Рассмотрим дополнительные особенности применительно к MySql. Научимся определять взаимные блокировки на бою и устранять их.
Ещё один интересный блок: выполнение расчётов в SQL-запросах. Не всегда нужно прибегать к написанию алгоритмов на языке программирования. Очень большие возможности дают вычисления в запросах. Например как вставить даты в таблицу "шахматкой", выбрать заказы, в которых пропущена нумерация позиций или распределить товары между складами равномерно, принимая различные параметры в расчёт. Это всё можно сделать одним запросом, одной командой SQL! В MySQL нет аналитических функций (или пока нет), но вычисления в запросах дают даже более гибкий функционал.
Последний небольшой, но тоже важный блок - это конфигурация MySql сервера. Стандартные значения параметров сервера годятся для небольших сайтов, интернет-магазинов, а для более серьёзной нагрузки установка правильных значений играет очень важную роль в распределении ресурсов. Научимся конфигурировать параметры СУБД под разные задачи.
Для участников курса, по желанию (в рамках дополнительной практической нагрузки), можно будет поучаствовать в разработке нашего нового проекта SQL-Learn. Мы создадим несколько хранимых модулей, выполняющих часть бизнес логики. Вместе предварительно обсудим максимально оптимальную реализацию, напишем и протестируем программный код! Созданный функционал будет использоваться на сайте sql-learn.com и в одноимённом мобильном приложении. Выход приложения готовится весной 2024 года.
На примере создания базы данных для ERP-сисиемы управления складом и продажами научимся организовывать хранение данных, создавать, редактировать таблицы под разные виды использования. Разберём подробно движки таблиц, ключи, индексы, правила определения столбцов (чтобы избегать проблем на бою) и повторим нормализацию.
Основной блок курса - это программирование на языке SQL/PSM. Научимся создавать хранимые процедуры и функции. Разберём циклы, курсоры, хэндлеры, научимся логировать выполнение программных модулей, а также возможные возникающие ошибки. Разберём новые возможности, которые появились в MySQL, позволяющие логировать выполнение и поиск исключений максимально быстро. Научимся создавать триггеры.
Научимся правильно пользоваться транзакциями и освоим методы минимизации вероятности возникновения взаимных блокировок (deadlocks), как это делается в больших софтверных компаниях. Рассмотрим дополнительные особенности применительно к MySql. Научимся определять взаимные блокировки на бою и устранять их.
Ещё один интересный блок: выполнение расчётов в SQL-запросах. Не всегда нужно прибегать к написанию алгоритмов на языке программирования. Очень большие возможности дают вычисления в запросах. Например как вставить даты в таблицу "шахматкой", выбрать заказы, в которых пропущена нумерация позиций или распределить товары между складами равномерно, принимая различные параметры в расчёт. Это всё можно сделать одним запросом, одной командой SQL! В MySQL нет аналитических функций (или пока нет), но вычисления в запросах дают даже более гибкий функционал.
Последний небольшой, но тоже важный блок - это конфигурация MySql сервера. Стандартные значения параметров сервера годятся для небольших сайтов, интернет-магазинов, а для более серьёзной нагрузки установка правильных значений играет очень важную роль в распределении ресурсов. Научимся конфигурировать параметры СУБД под разные задачи.
Для участников курса, по желанию (в рамках дополнительной практической нагрузки), можно будет поучаствовать в разработке нашего нового проекта SQL-Learn. Мы создадим несколько хранимых модулей, выполняющих часть бизнес логики. Вместе предварительно обсудим максимально оптимальную реализацию, напишем и протестируем программный код! Созданный функционал будет использоваться на сайте sql-learn.com и в одноимённом мобильном приложении. Выход приложения готовится весной 2024 года.
👍1
Есть таблица сотрудников компании PERSONS, имеющая, среди прочих, столбец BIRTHDATE, в котором указана их дата рождения.
Задача: написать запрос, отбирающий сотрудников, дни рождения которых выпадают на следующие 15 дней.
Необходимо помнить, что если запрос будут запускать, например, 31 декабря, то должны вывестись сотрудники, чьи даты рождения выпадают с 31 декабря по 14 января.
Напишите, пожалуйста, решение задачи в комментарии. В конце дня я напишу одно из возможных решений и отмечу сердечком правильные Ваши варианты.
Задача: написать запрос, отбирающий сотрудников, дни рождения которых выпадают на следующие 15 дней.
Необходимо помнить, что если запрос будут запускать, например, 31 декабря, то должны вывестись сотрудники, чьи даты рождения выпадают с 31 декабря по 14 января.
Напишите, пожалуйста, решение задачи в комментарии. В конце дня я напишу одно из возможных решений и отмечу сердечком правильные Ваши варианты.
Спасибо всем за старания и участие в решении этой задачи! Полина и Александр предложили верные, хотя и разные решения задачи.
Александр, Ваше решение немного нужно доработать. В местах, где сравниваете результат работы текстовой функции REPLACE с датой, нужно результат работы REPLACE обернуть в to_date. Чтобы было сравнение одинаковых между собой типов данных.
Александр, Ваше решение немного нужно доработать. В местах, где сравниваете результат работы текстовой функции REPLACE с датой, нужно результат работы REPLACE обернуть в to_date. Чтобы было сравнение одинаковых между собой типов данных.
Вот доработанный результат:
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
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
Вы правильно поняли, что сложность задачи заключается в том, что в поле 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 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)
👍9
Доброе утро, друзья!
Сегодня предлагаю решить необычную задачу с собеседования.
Каким SQL запросом/командой можно посчитать сколько раз в заданном тексте встречается конкретный символ, например точка?
Решение напишу, как всегда, попозже🙂
Сегодня предлагаю решить необычную задачу с собеседования.
Каким SQL запросом/командой можно посчитать сколько раз в заданном тексте встречается конкретный символ, например точка?
Решение напишу, как всегда, попозже🙂
Отличная работа! Почти все решения верные (+ одно ещё на проверке).
Спасибо Вам за активное участие в решении задачи.
Приглашаю посмотреть варианты её решения (кому далось не легко):
https://youtu.be/lYXRDsi0szU
Спасибо Вам за активное участие в решении задачи.
Приглашаю посмотреть варианты её решения (кому далось не легко):
https://youtu.be/lYXRDsi0szU
YouTube
Решение задач по SQL. Собеседование. Таблица DUAL, CONNECT BY LEVEL, Текстовые функции
В этом уроке приведена интересная задача по SQL: Как с помощью SELECT-а получить количество искомой буквы в заданном фрагменте текста. Разбираем методы решения. Стандартные и нестандартные методы.
Пример нестандартного использования CONNECT BY LEVEL.
Тестовые…
Пример нестандартного использования CONNECT BY LEVEL.
Тестовые…
👍7
В базе данных есть таблица CLIENTS, имеющая, среди прочих, столбец CLIENT_TYPE. Все строки таблицы имеют значение CLIENT_TYPE равное 1.
Запрос SELECT MAX(CLIENT_TYPE) FROM CLIENTS WHERE CLIENT_TYPE <> 1 вернёт значение:
Запрос SELECT MAX(CLIENT_TYPE) FROM CLIENTS WHERE CLIENT_TYPE <> 1 вернёт значение:
Anonymous Quiz
54%
null
22%
0
13%
1
1%
2
10%
будет ошибка выполнения SQL-запроса
❤🔥6🔥2
Начните утро понедельника с небольшой задачки по SQL! Найдите лишнее:
Anonymous Quiz
16%
NULLIF(5, 4)
22%
COALESCE(NULL, 5, NULL)
7%
ABS(-5) * 1
56%
-1 * ABS(5)
Каких только задачи не встретишь на собеседовании по SQL. Вот пример ещё одной задачи (немного изменённая, но я сохранил смысл):
Есть всё та же таблица CLIENTS, имеющая, среди прочих, столбец CLIENT_TYPE. В таблице 4 строки. CLIENT_TYPE в первых двух из них имеет значение 1, в третьей и четвёртой строке в CLIENT_TYPE содержится значение 2.
Есть всё та же таблица CLIENTS, имеющая, среди прочих, столбец CLIENT_TYPE. В таблице 4 строки. CLIENT_TYPE в первых двух из них имеет значение 1, в третьей и четвёртой строке в CLIENT_TYPE содержится значение 2.
Сколько строк вернёт следующий запрос?
SELECT COUNT(DISTINCT CLIENT_TYPE) FROM CLIENTS
SELECT COUNT(DISTINCT CLIENT_TYPE) FROM CLIENTS
Anonymous Quiz
20%
1
73%
2
2%
3
5%
4
Специальная задачка для ораклистов! 😌
Какое значение вернёт следующий запрос: SELECT DECODE(5, -5, 5, -5) FROM DUAL
Какое значение вернёт следующий запрос: SELECT DECODE(5, -5, 5, -5) FROM DUAL
Anonymous Quiz
13%
5
54%
-5
33%
NULL
Одна неделя осталась до Нового года! 🎉🎄
Давайте встретим его с мощными знаниями по SQL! 🥇
Курс "SQL. Базы данных. ORACLE. MS SQL Server. MySql" всего за 3.900
Записаться можно тут:
https://prime-soft.biz/courses/sql
Предложение действительно до 15го января!
💻
Давайте встретим его с мощными знаниями по SQL! 🥇
Курс "SQL. Базы данных. ORACLE. MS SQL Server. MySql" всего за 3.900
Записаться можно тут:
https://prime-soft.biz/courses/sql
Предложение действительно до 15го января!
💻
prime-soft.biz
Prime | SQL. Базы данных. ORACLE, MS SQL Server, MySQL
Уроки и курсы SQL, ORACLE, MS SQL Server, MySQL, Базы данных. Практические файлы и материал.
Предлагаю решить очередную небольшую задачу по SQL 🙂💪
Есть таблица CLIENTS (клиенты), имеющая, среди прочих, столбцы:
ID_CLIENT NUMBER PRIMARY KEY,
NAME_CLIENT VARCHAR(100) NOT NULL
И есть таблица INVOICES (счета клиентам) со столбцами:
ID_INVOICE NUMBER PRIMARY KEY,
ID_CLIENT NUMBER NOT NULL,
AMOUNT NUMBER NOT NULL
В таблице INVOICES столбец ID_CLIENT определён как внешний ключ (FOREIGN KEY), ссылающийся на таблицу CLIENTS на поле ID_CLIENT.
Задача вывести все столбцы из таблицы клиентов, а также дополнительными столбцами вывести "количество продаж для каждого клиента" и "ранг клиента". Чем больше счетов выставлено клиенту, тем выше его ранг, такие клиенты должны быть выведены первыми в отчёте.
Попробуйте решить задачу сначала самостоятельно. Попозже напишу решение этой задачи! 🙂👌
Есть таблица CLIENTS (клиенты), имеющая, среди прочих, столбцы:
ID_CLIENT NUMBER PRIMARY KEY,
NAME_CLIENT VARCHAR(100) NOT NULL
И есть таблица INVOICES (счета клиентам) со столбцами:
ID_INVOICE NUMBER PRIMARY KEY,
ID_CLIENT NUMBER NOT NULL,
AMOUNT NUMBER NOT NULL
В таблице INVOICES столбец ID_CLIENT определён как внешний ключ (FOREIGN KEY), ссылающийся на таблицу CLIENTS на поле ID_CLIENT.
Задача вывести все столбцы из таблицы клиентов, а также дополнительными столбцами вывести "количество продаж для каждого клиента" и "ранг клиента". Чем больше счетов выставлено клиенту, тем выше его ранг, такие клиенты должны быть выведены первыми в отчёте.
Попробуйте решить задачу сначала самостоятельно. Попозже напишу решение этой задачи! 🙂👌