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

Одним из существенных отличий между СУБД при написании запросов к базе является разный синтаксис написания функций для работы с датами и временем.

А для решения задач функции дат приходится использовать постоянно.

Выкладываю сравнительный анализ полезных функций для работы с датами и временем на СУБД PostgreSQL и MySQL.
Как вам такой тортик на день рождение?)
🔥2
Друзья, привет.
Знаете ли вы, что в PostgreSQL, если не указать столбец, а вместо этого указать таблицу в операторе ORDER BY, мы не получим ошибку?

Запрос отработает и в этом случае сортировка по умолчанию будет выполнена по первому столбцу таблицы.
Сегодня я вам расскажу как в PostgreSQL двумя простыми способами можно заменить конкретное значение в столбце на необходимое.

Способ № 1 – Комбинация функций COALESCE и NULLIF.

Способ № 2 – Использование функции REPLACE.

В обоих случаях меняем страну Францию на Россию.
Несомненно, шаг в развитии технологий в мире ИИ - это большой прорыв. Появление таких инструментов, как Chat GPT, стало чем-то революционным. И почему бы не воспользоваться ими, если это может оказать существенную помощь в разных направлениях, снять часть рутинной работы, оптимизировать и улучшить существующие наработки, помочь в планировании или оказать техническую поддержку при настройке программного обеспечения. И, конечно же, это не весь спектр возможностей.

Как и при любом подходе к делу или реализации вашей идеи, нужен критический и системный подход. Минимум нужно разбираться в области и понимать, что вы хотите, удовлетворяет ли результат вашим ожиданиям, а не слепо следовать интуиции. Каждый человек является аналитиком, каждый день мы анализируем большой поток информации и принимаем на его основе решения. И хотелось бы, чтобы решения были верными.
Как говорится, доверяй, но проверяй!! Это закономерно и для Chat GPT =)
В SQL (Structured Query Language) существуют три основных типа команд: DDL (Data Definition Language), DML (Data Manipulation Language) и DCL (Data Control Language). Каждый из этих типов команд выполняет определенные функции при работе с базами данных.
Вот их краткое описание:

DDL (Data Definition Language) - определяет/изменяет структуру базы данных (CREATE, ALTER, DROP);

DML (Data Manipulation Language) - манипулирует данными (SELECT, INSERT, UPDATE, DELETE);

DCL (Data Control Language) - управляет доступом (GRANT, REVOKE, DENY).
Всем привет!🖐

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

Например этот запрос изменит информацию о пользователе с id = 3:

UPDATE users
SET user_name = 'Snouden', country = 'USA'
WHERE user_id = 3

Будьте крайне аккуратны с данным оператором!!
Если не указать условие, на основании которого выполняется обновление информации в заданных строках, СУБД обновит абсолютно все строки данной таблицы. Положительный момент в том, что СУБД попытается предупредить вас об этом, не игнорируйте это!!
Всем, привет.

Давайте немного потренируем мозг и вспомним основные операторы SQL =).

Для этого вам поможет небольшой, составленный мною кроссворд.

Решать можно как с компьютера, так и с мобильного устройства перейдя по ссылке http://puzzlecup.com/?guess=D798E76656D2C1AU. Для того чтобы увидеть задание наведите на любую пустую строку или столбец кроссворда и слева вы увидите всплывающее задание. После того как все отгадаете, нажмите кнопку "Ну, все!Сверяем"
🔥6👍1
Друзья, привет🤝.

Рассмотрим простой запрос с соединением двух таблиц:

SELECT *
FROM clients c
JOIN orders o
ON c.client_id = o.client_id


В результат соединения попадет дублирующий столбец client_id.

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

SELECT *
FROM clients
JOIN orders
USING (client_id)

В данном примере вместо условия ON c.client_id = o.client_id мы использовали USING, в скобках которого указали столбец для соединения двух таблиц.
Мало того что сам запрос оказался более компактным, так мы еще и избежали появления дублирующего столбца client_id в результате.
👍6🔥3👏2
Привет, друзья, сегодня я без кода, но с порцией мотивации = ).

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

Этот подход активирует нашу любознательность и мотивацию к познанию. Мы начинаем исследовать, анализировать и искать объяснения, расширяем свои знания и понимание мира.

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

Таким образом, задавая себе вопросы о причинах и принципах, мы открываем для себя новые знания и преодолеваем трудности. Мы обретаем навыки анализа, критического мышления и инноваций, что позволяет нам развиваться и достигать успеха в разных областях жизни.
👍6
Друзья, всем привет!🖐 Как вы думаете в какой последовательности СУБД обрабатывает запрос?
Anonymous Poll
35%
SELECT, FROM, WHERE, GROUP BY, ORDER BY
13%
SELECT, WHERE, GROUP BY, ORDER BY, FROM
48%
FROM, WHERE, GROUP BY, SELECT, ORDER BY
4%
Это слишком простой вопрос чтобы на него отвечать!
👍5❤1
Всем, привет!🖐

По поводу прошлого поста опроса. Правильный ответ: FROM, WHERE, GROUP BY, SELECT, ORDER BY.

Порядок отработки операторов в SQL определен для обеспечения логической последовательности выполнения.

1. FROM (ИЗ): Оператор FROM указывает, из какой таблицы нужно выбирать данные. Он является первым оператором в запросе, так как все остальные операторы оперируют данными из указанных источников.

2. WHERE (ГДЕ): Оператор WHERE фильтрует строки данных в соответствии с заданным условием. Он следует после оператора FROM, потому что нужно сначала указать источник данных.

3. GROUP BY (ГРУППИРОВАТЬ ПО): Оператор GROUP BY группирует строки данных по определенным столбцам. Он используется для создания групп и агрегации данных внутри каждой группы.

4. SELECT (ВЫБРАТЬ): Оператор SELECT определяет столбцы, которые нужно выбрать и отобразить в результирующей выборке.

5. ORDER BY (УПОРЯДОЧИТЬ ПО): Он следует после SELECT, так как нужно сначала определить выбранные столбцы, а уже потом выполнить сортировку.
🔥7
Друзья, привет!🖐

Решим такую задачу.

Найти всех клиентов, у которых в полном имени их контакта используется 3 элемента (слова). Например ‘Иванов Иван’ нам не подойдет, а вот ‘Иванов Иван Иванович’ это то что нужно.

Для решения задачи воспользуемся функцией REGEXP_SPLIT_TO_TABLE, которая разделяет содержимое строки на элементы по разделителю.

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

Они позволяют выполнять вычисления на наборе строк в рамках определенного окна (группы).
С помощью них можно решать задачи, связанные со смещением и ранжированием значений, с вычислением скользящих средних и расчетом накопительных сумм, задачи анализа относительного изменения метрик и многое другое.
Некоторые задачи существенно сложнее решить без оконных функций, их реализация будет сложнее и потребует написания очень внушительного запроса. Используя оконную функцию задача решится в два счета.
Многие крупные компании, включая финансовые учреждения, розничные сети и аналитические компании, широко используют оконные функции SQL в своей работе и требуют от своих сотрудников их знания.
Данный инструмент открывает новые возможности для гибкого и эффективного анализа данных.
❤6
Всем привет.
Сегодня выходной, поэтому легкий, но полезный пост о том как достичь отличный результатов в обучении SQL да и не только.

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

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

3.Системность и дисциплина: Задайте себе порядок обучения и придерживайтесь его. Каждый день решайте задачи, читайте материал, разбирайтесь в том что не понятно, изучайте новое. Пусть это будет 20 – 30 минут в день, но это необходимо.

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

5.Общение: Общайтесь с преподавателем, с другими учениками, вступайте в тематические сообщества, форумы и каналы. Проявляйте интерес и делитесь с другими.

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

7.Не ищите себе оправданий: Что мы только не выдумываем, чтобы не делать это сегодня, ведь есть же еще завтра. Только завтра будет тоже самое, вновь появятся неотложные дела или мы выдумаем их сами и так до бесконечности. Запомните – “Завтра, значит никогда!”.

Как то так, друзья. Выработайте из этих правил привычку и успех гарантирован! Хорошего выходного.
❤3👏2
Всем привет.
Вот и начало очередной трудовой недели, поэтому пора получать свежие порции информации.

Сегодня простым языком постараюсь объяснить что такое EXISTS в SQL, т.к. для многих это является темной лошадкой. А также покажу на простом примере отличие от IN.

EXISTS - это оператор, который проверяет, есть ли результат проверки условия в подзапросе. Он возвращает истину или ложь в зависимости от наличия записей внутри подзапроса. И если в подзапросе EXISTS обнаружил истину, то возвращаются все записи основного запроса. Да, это так просто.

Рассмотрим пример:

SELECT product_id,
product_name
FROM products p
WHERE EXISTS (SELECT *
FROM order_details
WHERE product_id = 1)

Логика: если в подзапросе в таблице order_details существует product_id = 1, то основной запрос вернет все строки из таблицы products, то есть строки со всеми product_id, просто потому что EXISTS в этом случае вернет истину.

Для лучшего понимания рассмотрим тот же пример с IN:

SELECT product_id,
product_name
FROM products p
WHERE product_id in
(SELECT product_id
FROM order_details od
WHERE product_id = 1)

Логика: в этом примере если в подзапросе существует product_id = 1, то основной запрос вернет только те строки основного запроса, в которых product_id = 1.

Конечно это один из простых примеров использования EXISTS.
Дальше будем разбирать примеры по сложнее.
🔥3❤2