Столбцы с типами JSON и JSONB удобны, когда нужно хранить произвольные данные без строгой схемы. Но иногда хочется добавить хоть какую-то валидацию структуры.
Для этого можно использовать расширение
👉 @SQLPortal
Для этого можно использовать расширение
pg_jsonschema
— оно позволяет задавать JSON-схему и тем самым контролировать структуру данных в таких столбцах.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2
Уже пробовал https://sql-workbench.com?
Запускай SQL-запросы к удалённым и локальным данным — таким как CSV, JSON и Parquet и визуализируй результат прямо в браузере, через duckdb в WebAssembly (WASM).
Удобно для быстрой аналитики без поднятия сервера или установки чего-либо.😎
👉 @SQLPortal
Запускай SQL-запросы к удалённым и локальным данным — таким как CSV, JSON и Parquet и визуализируй результат прямо в браузере, через duckdb в WebAssembly (WASM).
Удобно для быстрой аналитики без поднятия сервера или установки чего-либо.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Комментарии к столбцам в Postgres — это удобный способ документировать назначение столбца прямо внутри базы данных. Часто именно здесь уместно указывать уровень чувствительности данных.
Добавить комментарий к столбцу можно простой SQL-командой:
➞
Комментарии хранятся как часть внутренней схемы таблицы. Самый простой способ их посмотреть — использовать команду:
👉 @SQLPortal
Добавить комментарий к столбцу можно простой SQL-командой:
➞
COMMENT ON COLUMN customers.ssn IS 'This is Sensitive PII';
Комментарии хранятся как часть внутренней схемы таблицы. Самый простой способ их посмотреть — использовать команду:
\d+ customers
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥1
Проверь свои знания Oracle SQL в режиме Speed SQL
У тебя есть 60 секунд, чтобы угадать пропущенные ключевые слова (????) в 10 SQL-выражениях.
Сможешь ли справиться со всеми?
https://devgym.oracle.com/pls/apex/f?p=10001:5000
Возвращайся каждый день — тебя ждут новые задания.
👉 @SQLPortal
У тебя есть 60 секунд, чтобы угадать пропущенные ключевые слова (????) в 10 SQL-выражениях.
Сможешь ли справиться со всеми?
https://devgym.oracle.com/pls/apex/f?p=10001:5000
Возвращайся каждый день — тебя ждут новые задания.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Interview Query — это платформа для подготовки к собеседованиям, особенно ориентированная на data science, аналитику, machine learning и продуктовую аналитику.
> SQL-задачи
> Статистику и вероятности
> A/B-тестирование
> Вопросы по моделям машинного обучения
> Продуктовые кейсы
👉 @SQLPortal
> SQL-задачи
> Статистику и вероятности
> A/B-тестирование
> Вопросы по моделям машинного обучения
> Продуктовые кейсы
Please open Telegram to view this post
VIEW IN TELEGRAM
Interview Query
Interview Questions
Prepare for your next data science and machine learning interview by practicing questions from top tech companies like Facebook, Google, and more.
Совет по Postgres: клонирование схемы с помощью CREATE TABLE LIKE.
В Postgres есть удобный способ создать таблицу с той же схемой, что и у другой таблицы:
Ключевое слово
> определения столбцов
> типы данных
> ограничения (включая первичные ключи, уникальные и check-ограничения)
> индексы
> параметры хранения
То есть копируется всё, кроме самих данных.
Когда это может пригодиться:
🔸 для создания резервной схемы и тестирования изменений над продакшен-таблицей
🔸 для создания временной таблицы с той же структурой — например, для staging или трансформации данных
🔸 при архивировании — чтобы структура архивной таблицы соответствовала оригинальной
🔸 чтобы обеспечить一 cогласованностьность схем у связанных таблиц
👉 @SQLPortal
В Postgres есть удобный способ создать таблицу с той же схемой, что и у другой таблицы:
CREATE TABLE new_table (LIKE existing_table INCLUDING ALL);
Ключевое слово
INCLUDING ALL
гарантирует, что будут скопированы все атрибуты схемы:> определения столбцов
> типы данных
> ограничения (включая первичные ключи, уникальные и check-ограничения)
> индексы
> параметры хранения
То есть копируется всё, кроме самих данных.
Когда это может пригодиться:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2❤1
Разработчики старой школы, новой школы, вайбкодеры — все обожают regex. Это же идеальный инструмент для работы с текстом и переменными. В Postgres отличная поддержка регулярных выражений. Вот примеры запросов на поиск и замену текста.
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Оконные функции в Postgres — это супер
С помощью SQL можно быстро:
🔸 Считать накопительные суммы
🔸 Строить агрегаты по группам / партициям
🔸 Создавать рейтинги и ранжирование
🔸 Делать lag/lead-анализ — сравнивать значения из разных строк
🔸 Вычислять скользящие (moving/rolling) средние
Вот практический туториал
👉 @SQLPortal
С помощью SQL можно быстро:
Вот практический туториал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
pg_eventserv: передача событий Postgres
https://github.com/crunchydata/pg_eventserv
👉 @SQLPortal
LISTEN/NOTIFY
в WebSocket-соединения.https://github.com/crunchydata/pg_eventserv
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Отслеживай отношения родитель–потомок в Oracle SQL с помощью
Полезные вспомогательные функции:
🔸
🔸
🔸
👉 @SQLPortal
CONNECT BY
:SELECT ...
FROM ...
START WITH <корневая_запись>
CONNECT BY PRIOR parent_row = child_row
Полезные вспомогательные функции:
LEVEL
— глубина текущей строки в иерархииCONNECT_BY_ISLEAF
— возвращает 1, если у строки нет потомковSYS_CONNECT_BY_PATH
— путь от корня до текущей строкиPlease open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Почему Postgres становится таким популярным для AI-нагрузок?
Но вот почему Postgres активно набирает популярность в AI-сфере:
➤ Интеграция AI с существующей или новой data-инфраструктурой
AI-приложения, как правило, работают с уже существующими структурированными данными — пользователи, клиенты, продукты, транзакции и т.д.
Postgres позволяет объединять эмбеддинги и выходные данные моделей с реляционными таблицами, чтобы строить AI-инструменты поверх существующих систем.
➤ Поддержка векторных типов данных
Расширение pgvector добавляет хранение эмбеддингов прямо в Postgres. Это зрелое, проверенное решение, поддерживаемое большинством поставщиков и пользователей Postgres.
pgvector также предоставляет продвинутые стратегии индексации (например, HNSW), которые ускоряют поиск и работу с векторами.
➤ Готовность к продакшену
Postgres покрывает все требования бизнеса: бэкапы, connection pooling, высокая доступность.
Это значит, что на нём можно запускать cutting-edge AI-проекты на стабильной, зрелой платформе, готовой к реальной эксплуатации.
👉 @SQLPortal
Нам не раз задавали этот вопрос — и мы понимаем почему: 30-летняя реляционная СУБД на первый взгляд не выглядит как инструмент, созданный для мира ИИ.
Но вот почему Postgres активно набирает популярность в AI-сфере:
➤ Интеграция AI с существующей или новой data-инфраструктурой
AI-приложения, как правило, работают с уже существующими структурированными данными — пользователи, клиенты, продукты, транзакции и т.д.
Postgres позволяет объединять эмбеддинги и выходные данные моделей с реляционными таблицами, чтобы строить AI-инструменты поверх существующих систем.
➤ Поддержка векторных типов данных
Расширение pgvector добавляет хранение эмбеддингов прямо в Postgres. Это зрелое, проверенное решение, поддерживаемое большинством поставщиков и пользователей Postgres.
pgvector также предоставляет продвинутые стратегии индексации (например, HNSW), которые ускоряют поиск и работу с векторами.
➤ Готовность к продакшену
Postgres покрывает все требования бизнеса: бэкапы, connection pooling, высокая доступность.
Это значит, что на нём можно запускать cutting-edge AI-проекты на стабильной, зрелой платформе, готовой к реальной эксплуатации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Материализованные представления (Materialized Views, MVs) хранят результаты запроса.
Основная проблема — поддержание их в актуальном состоянии.
Killianlynchh показывает, как материализованные представления в реальном времени (с параметром
👉 @SQLPortal
Основная проблема — поддержание их в актуальном состоянии.
Killianlynchh показывает, как материализованные представления в реальном времени (с параметром
ON QUERY COMPUTATION
в Oracle Database) позволяют получать актуальные данные, применяя изменения к устаревшим представлениям.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Вы можете использовать
...за исключением случая:
Почему так?
поэтому доступны только те столбцы, что явно указаны в
Объяснение от Lukas Eder — blog.jooq.org
👉 @SQLPortal
ORDER BY
по столбцам, которых нет в SELECT-списке запроса....за исключением случая:
SELECT DISTINCT this FROM t ORDER BY that -- некорректно!
Почему так?
DISTINCT
удаляет дубликаты из выбранных значений и формирует новую таблицу,поэтому доступны только те столбцы, что явно указаны в
SELECT
Объяснение от Lukas Eder — blog.jooq.org
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3
SQL TO-DO LIST для аналитика данных
Создание таблицы
Вставка данных в таблицу
Базовый SELECT
WHERE
ORDER BY
LIMIT
🔸 Advanced SQL Tasks (общие)
Запуск дашборда в Power BI / Tableau на SQL-данных
Выполнение SQL-запросов на датасетах:
> Chinook Database: https://github.com/lerocha/chinook-database
> IMDB data: https://imdb.com/interfaces/
🔸 Intermediate SQL Tasks
Агрегатные функции
GROUP BY и HAVING
JOIN
Подзапросы
🔸 Advanced SQL Tasks (продвинутые)
Оконные функции (Window Functions)
CTE
Очистка данных
👉 @SQLPortal
Создание таблицы
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary INT
);
Вставка данных в таблицу
INSERT INTO employees VALUES
(1, 'John Doe', 'Finance', ...);
Базовый SELECT
SELECT name, salary
FROM employees;
WHERE
SELECT *
FROM employees
WHERE salary > 40000;
ORDER BY
SELECT *
FROM employees
ORDER BY salary DESC;
LIMIT
SELECT *
FROM employees
LIMIT 5;
Запуск дашборда в Power BI / Tableau на SQL-данных
Выполнение SQL-запросов на датасетах:
> Chinook Database: https://github.com/lerocha/chinook-database
> IMDB data: https://imdb.com/interfaces/
Агрегатные функции
SELECT department, AVG(salary)
FROM employees
GROUP BY department;
GROUP BY и HAVING
SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 2;
JOIN
SELECT e.name, d.location
FROM employees e
JOIN departments d
ON e.department = d.name;
Подзапросы
SELECT name
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
Оконные функции (Window Functions)
SELECT name, salary,
RANK() OVER (
PARTITION BY department
ORDER BY salary DESC
) AS dept_rank
FROM employees;
CTE
WITH high_earners AS (
SELECT *
FROM employees
WHERE salary > 50000
)
SELECT *
FROM high_earners;
Очистка данных
SELECT TRIM(LOWER(name)) AS cleaned_name
FROM employees;
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥1
Полный список формул и ярлыков Excel.
1. Сумма диапазона
2. Сумма через "+"
3. Сумма констант
4. Произведение диапазона
5. Произведение ячеек
6. Произведение констант
7. Вычитание
8. Деление
9. Проценты
10. Максимум
11. Минимум
12. Возведение в степень
13. Среднее значение
14. Квадратный корень
15. Подсчёт непустых ячеек
16. Подсчёт пустых ячеек
17. Подсчёт по условию
18. Текущие дата и время
19. Сегодняшняя дата
20. День месяца (текущий)
21. Месяц (текущий)
22. Год (текущий)
23. Вставить текущую дату
24. Вставить текущее время
25. Вставить текущие дату и время
26. Проверка зачёта (IF)
👉 @SQLPortal
1. Сумма диапазона
=SUM(A1:A5)
2. Сумма через "+"
=(A1+A2+A3+A4+A5)
3. Сумма констант
=(45+243+48)
4. Произведение диапазона
=PRODUCT(F1:F2)
5. Произведение ячеек
=(B3*B4*B5)
6. Произведение констант
=(34*65)
7. Вычитание
=(E3-E4)
8. Деление
=(F3/F4)
9. Проценты
=(G3/G4*100)
10. Максимум
=MAX(H3:M3)
11. Минимум
=MIN(H3:M3)
12. Возведение в степень
=POWER(2,4) → 16
13. Среднее значение
=AVERAGE(C3:C14)
14. Квадратный корень
=SQRT(25)
15. Подсчёт непустых ячеек
=COUNT(C4:P4)
16. Подсчёт пустых ячеек
=COUNTBLANK(C3:C16)
17. Подсчёт по условию
=COUNTIF(D4:Z4, "P")
18. Текущие дата и время
=NOW()
19. Сегодняшняя дата
=TODAY()
20. День месяца (текущий)
=DAY(NOW())
21. Месяц (текущий)
=MONTH(NOW())
22. Год (текущий)
=YEAR(NOW())
23. Вставить текущую дату
CTRL + ;
24. Вставить текущее время
CTRL + SHIFT + ;
25. Вставить текущие дату и время
CTRL + ; затем пробел, затем CTRL + SHIFT + ;
26. Проверка зачёта (IF)
=IF(H4>=400, "PASS", "FAIL")
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍6