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

Сегодня расскажу вам про оператор 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
Друзья, привет!

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

Как же провернуть такое обычной группировкой…Давайте посмотрим на скриншот.
Обратите внимание что в GROUP BY мы вставили дополнительный оператор ROLLUP, после которого указали в скобках поля для группировки.

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

Вот такая интересная вещь. При желании можно заполнить значения NULL например фразой ‘Общее количество заказов’ используя COALESCE. Не стал усложнять чтобы вы смогли понять как работает ROLLUP.
👍4🔥2❤1
SELECT 4/5 - какое число получится в результате?
Anonymous Quiz
21%
1
33%
0
38%
0.8
8%
1.0
🔥3
Ребят, небольшая поправка. Речь именно о PostgreSQL. Т.к в разных СУБД деление целых чисел может возвращать разный результат☝️
Ребята, привет. Кратко о проблеме роста объема информации в современном мире.

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

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

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

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

Оптимизация баз данных является важным вопросом, который нельзя игнорировать в современном мире. Она обеспечивает более быстрый доступ к информации, снижает издержки, повышает безопасность и способствует эффективному управлению большим объемом данных. Как результат, она влияет на качество услуг, удовлетворенность пользователей, производительность и успех во многих областях деятельности.
❤7
Докопался до бота=).
👍4