This media is not supported in your browser
VIEW IN TELEGRAM
Хотите получить в #SQL строку top-N для каждой группы? Например.
Лучшие результаты/экзамен
Самые высокооплачиваемые сотрудники/отдел
Лучший результат/команда
Пронумеруйте строки для каждой группы в подзапросе с помощью функции
Затем отфильтруйте эти значения во внешнем запросе.
@sqlhub
Лучшие результаты/экзамен
Самые высокооплачиваемые сотрудники/отдел
Лучший результат/команда
Пронумеруйте строки для каждой группы в подзапросе с помощью функции
ROW_NUMBER () OVER (
PARTITION BY <group_cols> ORDER BY <sort_cols>
)
Затем отфильтруйте эти значения во внешнем запросе.
@sqlhub
👍7🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Вы можете объединить строки из двух таблиц в одну с помощью UNION и UNION ALL
В чем разница?
#SQL
@sqlhub
В чем разница?
UNION
дедублирует данные, поэтому на выходе получается одна строка для каждого набора значенийUNION ALL
сохраняет все строки из каждой таблицы.#SQL
@sqlhub
👍16🔥3❤2👎1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
С помощью
SELECT ... FOR UPDATE
Если другая транзакция заблокировала какую-либо из этих строк, то она блокируется.
Чтобы заблокировать следующие строки таблицы, игнорируя заблокированные данные, используйте
SELECT ... FOR UPDATE SKIP LOCKED
Это позволит обойти все строки, заблокированные другой транзакцией.
#SQL
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🔥1😁1
🔥 Дайджест полезных материалов из мира SQL за неделю
Почитать:
— Отправка и обработка HTTP запросов в PostgreSQL
— Airflow vs NiFi: исследуем оркестратор для формирования витрин данных
— Повышение эффективности SQL-запросов: советы и рекомендации
— Top 10 Tools For SQL Writing For Students
— How Randomized SQL Testing Can Help Detect Bugs?
— SQL Joins Infographic
— ACID and Transactions in SQL
— SQL - Stored Procedures for Reusable and Secure SQL Code
— SQLite Create Table If Not Exists: Conditional Table Creation
— Text2SQL: Converting Natural Language to SQL
— CRUD Operations in SQL
— Should you use an enum column or a table to store allowed values in SQL?
— 7 Tips to Optimise Postgres query performance
Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. (⏱ 05:23)
🌐 NLP практика. Определяем тональность текста при помощи NLTK и DL (⏱ 19:37)
🌐 Задача, которая очень часто встречается на собеседованиях #python (⏱ 00:59)
🌐 Хитрая задача с собеседования #Python (⏱ 00:59)
🌐 Решение непростой задачи с Leetcode, часто всплывает на собеседования #pythontutorial (⏱ 00:59)
🌐 Django шаблонизация и маршрутизация (⏱ 09:11)
Хорошего дня!
@sqlhub
Почитать:
— Отправка и обработка HTTP запросов в PostgreSQL
— Airflow vs NiFi: исследуем оркестратор для формирования витрин данных
— Повышение эффективности SQL-запросов: советы и рекомендации
— Top 10 Tools For SQL Writing For Students
— How Randomized SQL Testing Can Help Detect Bugs?
— SQL Joins Infographic
— ACID and Transactions in SQL
— SQL - Stored Procedures for Reusable and Secure SQL Code
— SQLite Create Table If Not Exists: Conditional Table Creation
— Text2SQL: Converting Natural Language to SQL
— CRUD Operations in SQL
— Should you use an enum column or a table to store allowed values in SQL?
— 7 Tips to Optimise Postgres query performance
Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. (⏱ 05:23)
🌐 NLP практика. Определяем тональность текста при помощи NLTK и DL (⏱ 19:37)
🌐 Задача, которая очень часто встречается на собеседованиях #python (⏱ 00:59)
🌐 Хитрая задача с собеседования #Python (⏱ 00:59)
🌐 Решение непростой задачи с Leetcode, часто всплывает на собеседования #pythontutorial (⏱ 00:59)
🌐 Django шаблонизация и маршрутизация (⏱ 09:11)
Хорошего дня!
@sqlhub
👍9❤2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Он переводит естественный язык в SQL запросы и выполняет их в базе данных.
На данный момент поддерживаются
MySQL, PostgreSQL и SQLite.
Пример:
ormgpt.query("give me post with id 1, all comments for this post and user information about author");
Сгенерированный запрос:
SELECT
p.id AS post_id,
p.title,
p.body,
c.id AS comment_id,
c.body AS comment_body,
u.username AS author_username,
u.email AS author_email
FROM
posts p
JOIN comments c ON p.id = c.post_id
JOIN users u ON u.id = p.user_id
WHERE
p.id = 1;
Вывод:
[
{
post_id: 1,
title: 'Hello world!',
body: 'This is my first post!',
comment_id: 1,
comment_body: 'Hello world!',
author_username: 'test',
author_email: '[email protected]'
}
]
• Github
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥6❤4😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
PostgreSQL - это база данных с открытым исходным кодом, обладающая широкими возможностями настройки.
Если вы хотите узнать, подходит ли она для ваших проектов, этот курс для начинающих поможет вам.
Вы узнаете об операторе
SELECT
, предложениях WHERE
, агрегатных функциях и многом другом.📌 Курс
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥4❤2
Выбор подходящей базы данных для своего проекта - сложная задача. Существует множество видов баз данных, каждая из которых подходит для разных случаев использования.
Данная шпаргалка поможет определить, какой сервис соответствует потребностям вашего проекта, и избежать возможных "
подводных камней
".@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥1
Он предназначен для использования в тестировании и поддерживает работу с такими базами данных, как sqlite, mysql, postgresql, mongodb, redis и couchdb.
pip install fake2db
📌 GitHub
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤3🔥3
🔥 Дайджест полезных материалов из мира SQL за неделю
Почитать:
— Построение OLAP-запросов с использованием аналитических функций
— 7 концепций SQL, которые необходимо знать для работы с данными
— Агент пожизненного обучения, который играет в Minecraft и непрерывно совершенствуется.
— How to Connect Java Applications to Databases with JDBC
— Entendendo o WHERE e o ORDER BY
— Exploring Ways of Performance Tuning Your Postgresql Database
— Implementing distributed Flink SQL gateway based on Kyuubi
— What do front-end developers think of no-code DataViz tools?
— Incubate Your SQL Optimizer Using Egg
— Schemas em SQL: Indexes e B+ trees
— Sql Service Broker
— Deleting a Column in SQL: Everything You Need to Know
— The RETURNING clause in SQL
Посмотреть:
🌐 Пишем телеграм бота для скачивания #yotube видео (⏱ 20:41)
🌐 Алгоритм бинарного поиска на #C++ (⏱ 00:59)
🌐 Очередь с приоритетом разбор задачи на #C++ (⏱ 01:00)
🌐 Задача на поиск числа с leetcode на С++ (⏱ 01:00)
🌐 Задача с #leetcode решаем на #golang (⏱ 00:32)
🌐 Разбор задачи на содержание массива #С++ (⏱ 00:59)
🌐 Django гайд по формам (⏱ 10:32)
🌐 New Azure SQL Database free offer | Data Exposed
Хорошего дня!
@sqlhub
Почитать:
— Построение OLAP-запросов с использованием аналитических функций
— 7 концепций SQL, которые необходимо знать для работы с данными
— Агент пожизненного обучения, который играет в Minecraft и непрерывно совершенствуется.
— How to Connect Java Applications to Databases with JDBC
— Entendendo o WHERE e o ORDER BY
— Exploring Ways of Performance Tuning Your Postgresql Database
— Implementing distributed Flink SQL gateway based on Kyuubi
— What do front-end developers think of no-code DataViz tools?
— Incubate Your SQL Optimizer Using Egg
— Schemas em SQL: Indexes e B+ trees
— Sql Service Broker
— Deleting a Column in SQL: Everything You Need to Know
— The RETURNING clause in SQL
Посмотреть:
🌐 Пишем телеграм бота для скачивания #yotube видео (⏱ 20:41)
🌐 Алгоритм бинарного поиска на #C++ (⏱ 00:59)
🌐 Очередь с приоритетом разбор задачи на #C++ (⏱ 01:00)
🌐 Задача на поиск числа с leetcode на С++ (⏱ 01:00)
🌐 Задача с #leetcode решаем на #golang (⏱ 00:32)
🌐 Разбор задачи на содержание массива #С++ (⏱ 00:59)
🌐 Django гайд по формам (⏱ 10:32)
🌐 New Azure SQL Database free offer | Data Exposed
Хорошего дня!
@sqlhub
👍12🔥2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
SELECT ... FROM ... VERSIONS BETWEEN TIMESTAMP <start_dt> AND <end_dt>
Возвращаются изменения в диапазоне дат.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤5🔥4
SQLMesh обеспечивает точность и эффективность построения конвейеров данных с помощью пробвинутого решения DataOps для преобразования, тестирования и совместной работы.
Виртуальные среды данных позволяют команде разработчиков создавать динамические представления данных, гарантируя, что таблицы не будут создаваться более одного раза. Модульные тесты, аудиты и Data Diff обеспечивают проверку на протяжении всего рабочего процесса разработки, что позволяет легко работать с данными.
pip install sqlmesh
▪ Github
▪ Подробнее
▪ Документация
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2❤1
Некоторые из них зарезервированы, поэтому их нельзя использовать в качестве имен таблиц и столбцов без разделителей
Но это зависит от системы баз данных!
Представляем вам полный список слов для различных бд, которые можно использовать в качестве идентификаторов без кавычек.
На схеме флажок (✓) означает, что слово принимается в качестве имени таблицы или столбца без кавычек.
https://modern-sql.com/reserved-words-empirical-list
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🔥3
Применение
Чтобы получить значения из приложения в Oracle Database, используйте
@sqlhub
MERGE
для логики "обновить, если существует", "вставить, если не существуетЧтобы получить значения из приложения в Oracle Database, используйте
DUAL
в качестве исходной таблицы.@sqlhub
👍10❤3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
При написании SQL-запросов Очень важно понимать порядок их выполнения.
В SQL-запросе операторы выполняются в следующем порядке:
1. FROM / JOIN
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. DISTINCT
7. ПОРЯДОК СЛЕДОВАНИЯ
8. LIMIT / OFFSET
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31❤17🔥4🤔1
1. Реляционные базы данных 💼
- Модель данных: Организует данные в таблицы со строками и столбцами.
- Примеры: MySQL, PostgreSQL, Oracle, SQL Server.
- Ключевые особенности: Соответствие стандарту ACID, высокая степень согласованности данных, структурированное хранение данных, поддержка SQL-запросов, хорошая приспособленность к сложным транзакциям и созданию отчетов.
2. База данных для документов 📄.
- Модель данных: Хранение данных в виде полуструктурированных или JSON-подобных документов.
- Примеры: MongoDB, CouchDB, Firebase Firestore.
- Ключевые особенности: Гибкая схема, горизонтальная масштабируемость, поддержка полуструктурированных данных, хорошо подходит для систем управления контентом и приложений реального времени.
3. In-Memory Database 🚀.
- Модель данных: Хранит данные полностью в оперативной памяти (ОЗУ) системы.
- Примеры: Redis, Memcached, Apache Ignite.
- Ключевые особенности: Сверхбыстрый поиск данных, низкая задержка, подходит для кэширования, управления сессиями и аналитики в реальном времени.
4. Графовые базы данных 🌐.
- Модель данных: Представляет данные в виде узлов и ребер для моделирования отношений.
- Примеры: Neo4j, Amazon Neptune, ArangoDB.
- Ключевые особенности: Эффективный запрос сложных отношений, обход графов, подходит для социальных сетей, рекомендательных систем и обнаружения мошенничества.
5. Базы данных для временных рядов 📈.
- Модель данных: Оптимизирована для упорядоченных по времени точек данных, таких как показания датчиков или файлы журналов.
- Примеры: InfluxDB, Prometheus, TimescaleDB.
- Ключевые особенности: Эффективное хранение и извлечение данных временных рядов, агрегирование, , идеально подходит для мониторинга IoT данных.
6. Пространственные базы данных 🌍.
- Модель данных: Предназначена для хранения пространственных или географических данных.
- Примеры: PostGIS (расширение для PostgreSQL), MongoDB Geospatial, Microsoft SQL Server Spatial.
- Ключевые особенности: Геопространственная индексация, поддержка пространственных типов данных (точки, полигоны, линии), подхожит для сервисов, основанных на определении местоположения, ГИС (географических информационных систем) и картографических приложений.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤4🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Теория, лежащая в основе шардинга баз данных, кажется простой.
Но как она реализуется в реальных базах данных?
Рассмотрим это на примере MongoDB (одной из самых популярных баз данных NoSQL)
Основы
Для шардинга в MongoDB необходим кластер.
Кластер - это группа взаимосвязанных серверов или узлов.
Для горизонтального масштабирования можно просто увеличить количество серверов.
Кластер состоит из трех частей:
- Шард
- Маршрутизатор Mongos
- Маршрутизатор конфигурации
Рассмотрим каждую часть:
✅ Шард
Шард - это подмножество данных.
Данные разделяются между группой шардов.
Каждый шард развертывается как набор реплик.
Это замечательная вещь...
...потому что вы получаете репликацию и автоматическое восстановление данных после отказа системы.
Но никаких прямых запросов к шарду не поступает.
✅ Маршрутизатор Mongos
Mongos Router играет ключевую роль в кластере Все запросы направляются на Mongos Router.
Он выполняет две важнейшие задачи:
- Маршрутизация запросов и балансировка нагрузки
- Кэширование метаданных
Маршрутизатор выступает в роли посредника для получения данных с реальных шардов.
✅ Серверы конфигурации
Серверы конфигурации работают как отдельный набор реплик.
Они хранят метаданные для кластера шардов MongoDB.
Метаданные - это как индекс для вашего кластера.
В них хранится такая информация, как:
- Как организованы данные?
- Какие компоненты присутствуют в кластере.
Вот как выглядит весь процесс:
- Код приложения запрашивает данные
- Маршрутизатор Mongos получает запрос
- Маршрутизатор проверяет сервер Config Server, чтобы найти, на каком шарде находятся данные
- Запрос направляется на соответствующий шард
- Данные возвращаются в приложение
Но как она реализуется в реальных базах данных?
Рассмотрим это на примере MongoDB (одной из самых популярных баз данных NoSQL)
Основы
Для шардинга в MongoDB необходим кластер.
Кластер - это группа взаимосвязанных серверов или узлов.
Для горизонтального масштабирования можно просто увеличить количество серверов.
Кластер состоит из трех частей:
- Шард
- Маршрутизатор Mongos
- Маршрутизатор конфигурации
Рассмотрим каждую часть:
✅ Шард
Шард - это подмножество данных.
Данные разделяются между группой шардов.
Каждый шард развертывается как набор реплик.
Это замечательная вещь...
...потому что вы получаете репликацию и автоматическое восстановление данных после отказа системы.
Но никаких прямых запросов к шарду не поступает.
✅ Маршрутизатор Mongos
Mongos Router играет ключевую роль в кластере Все запросы направляются на Mongos Router.
Он выполняет две важнейшие задачи:
- Маршрутизация запросов и балансировка нагрузки
- Кэширование метаданных
Маршрутизатор выступает в роли посредника для получения данных с реальных шардов.
✅ Серверы конфигурации
Серверы конфигурации работают как отдельный набор реплик.
Они хранят метаданные для кластера шардов MongoDB.
Метаданные - это как индекс для вашего кластера.
В них хранится такая информация, как:
- Как организованы данные?
- Какие компоненты присутствуют в кластере.
Вот как выглядит весь процесс:
- Код приложения запрашивает данные
- Маршрутизатор Mongos получает запрос
- Маршрутизатор проверяет сервер Config Server, чтобы найти, на каком шарде находятся данные
- Запрос направляется на соответствующий шард
- Данные возвращаются в приложение
👍9❤6🔥1