IliaHohlov

IliaHohlov

Студия Прайм
На Пикабу
4M4DEUS
4M4DEUS оставил первый донат
5889 рейтинг 663 подписчика 1 подписка 89 постов 15 в горячем
Награды:
5 лет на Пикабу
11

Собеседование по SQL: 4 способа подсчитать количество определённой буквы в слове

Нужно решить задачу на собеседовании разными способами: посчитать сколько раз встречается определённая буква в слове или фразе.

Способ 1: Узнать на сколько символов уменьшится длина слова, если функцией REPLACE удалить все вхождения этой буквы из него:

Это и другие решения будут на примере СУБД ORACLE. На самом деле способов решения подобных задач куда больше, но пока ограничимся четырьмя.

Способ 2: Представить слово как таблицу из одного столбца из его букв, и функцией COUNT подсчитать количество нужной буквы. Вначале напишем запрос, который делал бы таблицу из букв слова:

Теперь напишем SELECT из этой полученной таблицы. Подсчитаем сколько строчек с нужной буквой:

Способ 3: Развернуть слово из строки в столбец по аналогии с предыдущим решением, и с помощью PIVOT подсчитать количество строк с нужной буквой:

Можно даже подсчитать количество вхождений каждой буквы из которых состоит слово или фраза:

Способ 4: Использовать регулярные выражения:

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

Изучение чужого кода позволяет открывать новые возможности языка. Помогает узнавать новые функции и способы их применения.

Буду рад лайку, если понравилась статья! И заходи на мой Телеграм канал. Сюда регулярно выкладываю новые задачи с собеседований по SQL и решаем реальные практические задачи!

Показать полностью 6
2

Рекомендации по написанию программного кода хранимых функций и процедур

Рекомендации по написанию программного кода хранимых функций и процедур

Чем больше нагрузка и больше одновременно выполняющихся транзакций, тем больше и ответственности при создании хранимых функций и процедур. Хорошо написанный программный код легко сопровождаем и не боится параллельной работы! Ниже собрал для вас основные рекомендации, которые важно учитывать при разработке хранимок (функций, процедур, триггеров).

1. Максимально эффективное обращение к данных (желательно всегда по первичным ключам и индексам);

2. Разделение сложных операций на более простые (сложный update, insert или delete с подзапросами можно упростить - сделать его по ключу, а данные, получаемые подзапросами, можно предварительно положить во временную таблицу или таблицу временного хранения данных);

3. Соблюдение идентичной последовательности работы с таблицами в разных функциях и процедурах (это позволит минимизировать вероятность взаимных блокировок);

4. Форматирование кода (соблюдение отступов, единое оформление, принятое в компании или в конкретной АС), использование регламентов оформления кода;

5. Соблюдение соответствия программы кода хранимки её назначению (процедура, открывающая вклад клиенту, должна открывать вклад клиенту и не должна дополнительно закрывать кредит);

6. Краткое и понятное комментирование неочевидных участков кода;

7. Идеальный код одной хранимки помещается на одном экране, чтобы не пришлось его прокручивать (конечно, на практике, это далеко не всегда так, но надо к этому стремиться). Если алгоритм большой, то его нужно разбивать на дополнительные функции и процедуры, которые можно использовать в коде основной функции/процедуры.

Буду рад лайку, если понравился материал! И еще напиши в комментарии какие приёмы при разработке хранимок используете Вы.

Показать полностью

Филворд на тему БАЗ ДАННЫХ на русском

Филворд на тему БАЗ ДАННЫХ на русском

Предлагаю небольшой филворд на тему баз данных. Всего по горизонтали и вертикали спрятано 23 слова. Если не решишь, смотри ответ здесь.

0

Это есть только в MySQL

Это есть только в MySQL

И MariaDB!

Как можно в команде SELECT при генерации данных в столбцы использовать значения других столбцов, не используя запросы из запросов и CTE.

Значения в некоторые столбцы могут формироваться сложным расчётами или подзапросами. Теперь представь, что при определённом получаемом значении в одном из таких столбцов, значение в соседнем столбце нужно формировать по-другому, или даже своим подзапросом на основании полученного значения в предыдущем столбце. Как реализовать подобное, не прибегая к запросу из получаемой таблицы данных и не используя CTE?

В СУБД MySql и MariaDB есть пользовательские переменные (те, что с собачкой @), которые можно использовать прямо пока выводятся данные командой SELECT, строчка за строчкой. Посмотри (в примере ниже переменная @id_table):

В ПРЕДПОСЛЕДНИЙ(!) столбец формируется значение идентификатора некоторого столика ресторана.

В ПОСЛЕДНИЙ(!) столбец рассчитывается количество свободных мест того столика ресторана, идентификатор которого выведен в предыдущем столбце. В пользовательскую переменную @id_table будет положено некоторое значение, оно же и будет выведено в качестве данных этого столбца. В следующий столбец подзапрос получит данные, опираясь на значение этой переменной. Главное, чтобы эти столбцы формировать в указанном порядке. Сначала столбец, в результате расчёта которого получим значение в переменную, а затем столбец, который будет использовать значение этой переменной. Удобно и легко, да? И эта возможность - лишь верхушка айсберга возможностей использования пользовательских переменных!

В примере выше для каждой строки такой расчёт выводит данные независимо от предыдущей строки, так как в каждой новой строке переменная @id_table получает новое значение и по-новой выполняется подзапрос на основании её значения.

Ещё про пользовательские переменные я писал здесь.

Больше полезного и интересного про SQL и базы данных в моем Телеграм-канале.

Поставьте лайк, если понравилась статья!

Показать полностью

SQL-задача про UNION

SQL-задача про UNION

Всем привет! Ещё один интересный вопрос с нашего Телеграм-канала про SQL и базы данных. Спасибо, что делитесь вопросами с собеседований!

Показать полностью 1
0

Задача на оптимизацию SQL запроса

Предлагаю ещё одну задачу по базам данных со своего Телеграм-канала по SQL и базам данных. Итак, среди прочих, имеется таблица выставленных счетов INVOICES:

В некотором отчёте АБС количество счетов, выставленных за текущий день формируется SQL запросом:

SELECT COUNT(*) COUNT_INV FROM INVOICES WHERE DATE(DATE_CREATE) = CURRENT_DATE

8

Как сконвертировать Книгу продаж из Excel в XML

Как сконвертировать Книгу продаж из Excel в XML

Как легко преобразовать файл эксель (Excel) книгу продаж в XML для последующей передачи в налоговую службу через систему электронного документооборота (ЭДО).

1. Заполняем строки книги продаж в экселе (шаблон можно взять отсюда);

Как сконвертировать Книгу продаж из Excel в XML

2. Открываем конвертер SalesBookXMLConvertor, выбираем заполненный ранее файл эксель.

3. Указываем данные организации (Наименование, ИНН, КПП), код МРИ, код ИФНС;

4. Указываем куда положить подготовленный файл XML и нажимаем "Сформировать XML";

5. Готово!

Показать полностью 2
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества