🧙MagicSQL💻
160 subscribers
185 photos
7 files
10 links
Войди в мир SQL и аналитики с моим каналом. Изучай, применяй и преуспевай. Интересный контент, задачи, тесты, разборы и обучение.
#SQL #базыданных #postgresql
Download Telegram
💾Деление целых чисел в SQL.💾

Всем, привет🖐.

По поводу прошлого опроса, на тему деления целых чисел в PostgreSQL расскажу как все таки это осуществляется в PostgreSQL и для сравнения в MySQL.

В PostgreSQL деление двух целых чисел возвращает только целую часть результата. Это означает, что дробная часть отбрасывается, и результат будет округлен в меньшую сторону к ближайшему целому числу.

Поэтому: SELECT 4/5;-- Результат: 0

В MySQL, по умолчанию, деление двух целых чисел возвращает результат с десятичной дробной частью, если она есть в результате деления.

SELECT 4/5;-- Результат: 0.8

Будьте аккуратны, кажется что это всего лишь числа, но когда вы будете выполнять некие вычисления, связанные с делением столбцов с целочисленными значениями, например для подсчета какой то метрики, не забывайте про эту особенность.
👍2❤1
Почему аналитики так сильно ценятся компаниями?

Аналитик данных играет критическую роль в современных компаниях, и это не случайно. Они обладают способностью преобразовывать необработанные данные в ценную информацию, которая помогает компаниям принимать обоснованные стратегические решения. Вот несколько причин, почему аналитики данных так важны для успеха компании:

1. Прогнозирование и оптимизация: Аналитики данных используют статистические методы и анализ данных для прогнозирования будущих трендов и результатов. Это помогает компаниям принимать предусмотрительные меры и оптимизировать свою деятельность, улучшая эффективность и прибыльность.

2. Поиск точек роста: Аналитики данных помогают компаниям определить новые рыночные возможности и потенциальные клиентские сегменты. Они анализируют данные о поведении потребителей, трендах рынка и конкурентной среде, чтобы выявить те моменты, которые могут принести компании конкурентные преимущества.

3. Принятие обоснованных решений: Аналитики данных предоставляют фактическую информацию и аналитическую поддержку, что помогает компаниям принимать обоснованные решения. Они анализируют данные и предоставляют ценные инсайты, на основе которых принимаются важнейшие решения.

4. Анализ эффективности: Аналитики помогают компаниям оценить эффективность своих операций и процессов. Они используют данные для выявления узких мест и проблемных областей, что позволяет компаниям принять корректирующие меры и повысить эффективность своей деятельности.

Короче говоря, аналитик данных является ключевым элементом, который помогает компаниям принимать информированные решения, оптимизировать свою деятельность и достичь успеха на рынке.
❤4
Функция OVERLAY в SQL.
Привет, расскажу про очень интересную функцию для работы со строками.

Функция OVERLAY в PostgreSQL используется для замены части строки внутри другой строки. Она возвращает новую строку, в которой указанная подстрока заменяет или перекрывает существующую подстроку.

Функция OVERLAY имеет следующий синтаксис:

OVERLAY(string PLACING overlay_string FROM 8 FOR 5);
где:

- string - столбец или исходная строка, которую нужно изменить
- PLACING - ключевое слово, указывающее какую новую подстроку следует поместить
- overlay_string - новая подстрока, которой следует заменить исходную подстроку
- FROM 8 - позиция, с которой начинается замена подстроки
- FOR 5 - сколько символов мы меняем на новую подстроку

Например, если у нас есть строка 'Hello, world and people!', и мы хотим заменить подстроку 'world' на 'PostgreSQL', то мы можем использовать функцию OVERLAY следующим образом:

SELECT OVERLAY('Hello, world and people!' PLACING 'PostgreSQL' FROM 8 FOR 5);

Результат будет следующим: 'Hello, PostgreSQL and people!'

Функция OVERLAY также может использоваться для вставки новой подстроки в указанное место в строке или для удаления части строки. Она предоставляет гибкое средство для манипуляции с подстроками в PostgreSQL.
❤3👍1
Всем, привет.

При использовании значений типа VARCHAR, PostgreSQL использует динамическую аллокацию памяти для хранения фактической длины строки. Это означает, что если вам нужно хранить строку длиной 10 символов, но фактическая длина записанной строки составляет только 5 символов, PostgreSQL выделяет только необходимое количество памяти для хранения этих 5 символов.

Пример: Вы храните строку ‘Hello’ в типе VARCHAR (20). В данном случае СУБД потребуется памяти чтобы вместить количество символов, равное количеству в строке ‘Hello’.

CREATE TABLE vk (vk_id varchar (20))
INSERT INTO vk (vk_id)
VALUES ('Hello')
Результат: 'Hello'

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

Пример: Вы храните строку ‘Hello’ в типе CHAR (20). В данном случае СУБД потребуется памяти чтобы вместить все 20 символов, указанные в ограничении CHAR т.к. разница между 5 и 20 символами заполнится пробелами.

CREATE TABLE vk (vk_id char (20))
INSERT INTO vk (vk_id)
VALUES ('Hello')
Результат: 'Hello_______________'

Однако, при выполнении операций сравнения, сортировки или поиска по значениям VARCHAR, PostgreSQL все равно должен учитывать фактическую длину строк. Это может отразиться на производительности, особенно если столбец с типом VARCHAR содержит большое количество строк с различными длинами. В таких случаях может потребоваться больше времени на выполнение операций, чем при использовании фиксированного размера строки, предоставляемого типом CHAR.

Поэтому, при выборе между типами CHAR и VARCHAR, следует учесть преимущества и ограничения каждого в контексте конкретных требований и ожидаемой структуры данных в вашей таблице.
❤3👍1
Друзья, привет. В данном опросе реальный вопрос с собеседования на позицию Аналитик. При использовании какого из JOIN получится меньше всего строк в результате?
Anonymous Quiz
14%
CROSS JOIN
18%
LEFT OUTER JOIN
55%
INNER JOIN
14%
FULL OUTER JOIN
Всем, привет🖐
😁4👍2
Топ 1 способ вывести первые несколько строк в SQL без лишних сложностей (строк: которые имеют одинаковые значения по условию сортировки).

Конструкция FETCH FIRST ROW WITH TIES в PostgreSQL используется для извлечения первых нескольких строк, которые имеют одинаковые значения по определенному условию сортировки. Если несколько строк имеют одинаковые значения в поле сортировки, все они будут возвращены.

Это значительно упрощает задачу и избавляет нас от подзапросов и использования оконной функции.
❤3👍3
4 способа обработки NULL значений в SQL.

1. IS NULL и IS NOT NULL: Это операторы сравнения, которые используются для проверки, является ли значение значением NULL или нет в условиях WHERE.

2. COALESCE: Функция COALESCE используется для замены NULL-значений на другое значение. Она принимает список аргументов и возвращает первое ненулевое значение из списка аргументов.

3. NULLIF: Функция NULLIF используется для сравнения двух значений. Если значения равны, функция возвращает NULL, в противном случае - первое значение.

4. CASE WHEN: Конструкция CASE WHEN позволяет выполнить условные операции в зависимости от значения столбца. Вы можете использовать ее для обработки NULL-значений.
❤2👏1
Преимущества использования индексов в SQL.

Всем привет. Расскажу про индексы в SQL.

Индексы в SQL - это структуры данных, создаваемые для ускорения выполнения операций поиска, сортировки и объединения в базах данных. Их основная цель - улучшить производительность запросов, сократить время выполнения и уменьшить нагрузку на сервер.

Использование индексов в базе данных имеет несколько преимуществ:

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

2. Улучшение производительности запросов: Индексы позволяют оптимизатору запросов выбрать эффективные планы выполнения запросов, так как они облегчают доступ к данным и уменьшают количество операций ввода-вывода на диске.

3. Сортировка данных: Индексы позволяют ускорить сортировку данных по определенному столбцу. Они предварительно отсортируют значения и создадут отображение от значений столбца к их физическим позициям на диске.

В целом, использование индексов является важным инструментом для оптимизации производительности и ускорения выполнения запросов. Они позволяют эффективно находить и извлекать данные, улучшать производительность и обеспечивать более быструю сортировку.
❤2👍1
Нормализация базы данных в SQL.

Нормализация в SQL - это процесс организации и структурирования базы данных для достижения эффективности и минимизации избыточности данных. Она включает разделение таблиц на более мелкие и связанные друг с другом, чтобы уменьшить дублирование информации.

Основные цели нормализации в SQL следующие:

1. Устранение повторений и избыточности данных: Нормализация помогает устранить избыточные данные, избегая дублирования информации в разных частях базы данных.

2. Улучшение структуры данных: Благодаря нормализации база данных становится логически структурированной, что облегчает понимание и поддержку.

3. Улучшение производительности: Нормализация может повысить производительность базы данных, так как меньшие таблицы и связи позволяют выполнять запросы более эффективно.

Процесс нормализации состоит из нескольких нормальных форм, таких как первая нормальная форма (1NF), вторая нормальная форма (2NF), третья нормальная форма (3NF) и т. д. Каждая нормальная форма имеет свои правила и директивы, которые помогают достичь определенного уровня нормализации.

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

В следующих публикациях расскажу простым языком про три нормальные формы.
🔥4❤1
Перед нами запрос на изменение данных. Наша задача изменить дату заказа и дату отгрузки для тех работников, чей id = 5.

UPDATE orders SET order_date = '2001-01-01', shipped_date = '2001-01-15' WHERE employee_id = 5 Что ни так в данном запросе?
Anonymous Quiz
14%
В операторе SET нельзя изменять значения сразу двух полей
36%
После UPDATE необходимо указать ключевое слово TABLE
14%
В данном запросе все так
36%
В операторе SET необходимо указать AND между значениями изменяемых полей вместо запятой
Друзья, привет. Подготовил разбор трех первых нормальных форм для нормализации БД. Прикрепляю три файла, в которых сделал разбор каждой формы с примерами. Найдите пожалуйста время, прочтите. Это должно внести некое понимание в эту не простую тему.

Три нормальные формы базы данных.

Первая нормальная форма (1NF) – значения каждого поля таблицы должны быть атомарны. То есть каждое значение не может быть разделено на составные части без потери смысла. Каждое значение является минимальной единицей информации и обеспечивает однозначность.

Вторая нормальная форма (2NF) – Каждое поле таблицы должно зависеть от полного составного ключа, а не от его отдельной части. Если какое либо поле, которое не является первичным ключом, зависит от части составного ключа, то таблица не находится во второй нормальной форме.

Третья нормальная форма (3NF) – Все неключевые поля в таблице должны функционально зависеть только от первичного ключа. В таблице не должно быть транзитивных функциональных зависимостей.
Транзитивная зависимость – это когда поля таблицы, не являющиеся первичным ключом зависят от других полей, которые также не являются первичным ключом. Этого быть не должно.
👍1
Статистические функции SQL.

Можно ли в SQL проводить статистический анализ? Можно.
Разберем несколько популярных и полезных функций.

corr ( Y column , X column ) - вычисляет коэффициент корреляции

regr_r2 ( Y column , X column ) - вычисляет квадрат коэффициента корреляции

stddev ( column ) - вычисляет стандартное отклонение

variance ( column ) - вычисляет дисперсию
👍4👏1
SELECT 100 + NULL - что получится в результатe?
Anonymous Quiz
0%
0
5%
101
50%
NULL
45%
100