Forwarded from Senior SQL Developer
MySQL: DIV
Функция DIV в MySQL возвращает целочисленное деление двух заданных чисел. Она принимает два аргумента: делимое и делитель, и возвращает результат деления в виде целого числа.
Синтаксис функции DIV выглядит следующим образом:
DIV(dividend, divisor) - Здесь dividend - это делимое, а divisor - это делитель. Оба аргумента должны быть числами. Если один из аргументов NULL, то результатом будет NULL.
Пример использования функции DIV
Предположим, у нас есть таблица с информацией о продажах. Нам нужно вычислить среднее количество продаж в день, зная общее количество продаж и количество дней, в течение которых эти продажи были сделаны. Мы можем использовать функцию DIV для вычисления среднего количества продаж в день
Функция DIV в MySQL возвращает целочисленное деление двух заданных чисел. Она принимает два аргумента: делимое и делитель, и возвращает результат деления в виде целого числа.
Синтаксис функции DIV выглядит следующим образом:
DIV(dividend, divisor) - Здесь dividend - это делимое, а divisor - это делитель. Оба аргумента должны быть числами. Если один из аргументов NULL, то результатом будет NULL.
Пример использования функции DIV
Предположим, у нас есть таблица с информацией о продажах. Нам нужно вычислить среднее количество продаж в день, зная общее количество продаж и количество дней, в течение которых эти продажи были сделаны. Мы можем использовать функцию DIV для вычисления среднего количества продаж в день
Forwarded from Хабр
«После того, как я посмотрел на клавиатуры популярных компьютеров конца 70-х и начала 80-х, я решил, что создатели ПК не особенно заморачивались, и взяли за базу печатные машинки. Действительно, кому могут понадобиться курсорные клавиши, расположение которых будет одинаковым на всех клавиатурах, которые можно нажимать одной рукой, да ещё вслепую?»
OPQAM, IJKL, 67890. О том, как нам реально повезло с курсорными клавишами
OPQAM, IJKL, 67890. О том, как нам реально повезло с курсорными клавишами
Forwarded from Data Science. SQL hub
SQL_Pandas.pdf
515.4 KB
🔥 Шпаргалка SQL → Pandas
— выбрать один столбец или несколько из них;
— фильтрация;
— выбор уникальных значений по столбцу;
— подсчет числа значений;
— перечисление названий столбцов и т.д.
@sqlhub
— выбрать один столбец или несколько из них;
— фильтрация;
— выбор уникальных значений по столбцу;
— подсчет числа значений;
— перечисление названий столбцов и т.д.
@sqlhub
Forwarded from Senior SQL Developer
Оптимизация SQL-запросов в Oracle (ч.1)
1. Минимизация использования DISTINCT
Ключевое слово DISTINCT может быть использовано для удаления дубликатов из результирующего набора данных. Однако использование DISTINCT увеличивает время выполнения запроса, поскольку база данных должна выполнить дополнительные операции для удаления дубликатов. Поэтому рекомендуется использовать DISTINCT только тогда, когда это действительно необходимо.
2. Минимизация использования ORDER BY
Ключевое слово ORDER BY используется для упорядочивания результирующего набора данных по одному или нескольким столбцам. Однако, использование ORDER BY увеличивает время выполнения запроса, особенно если сортировка выполняется по большому количеству данных. Если сортировка не является необходимой, то лучше избегать использования ORDER BY, либо использовать ее в интерфейсе программы:
- путем экспорта в excel и последующим использованием встроенных фильтров (если дальнейшая работа с данными предстоит именно в этом инструменте);
- путем сортировки BI-инструменте, если скрипт будет использован там.
1. Минимизация использования DISTINCT
Ключевое слово DISTINCT может быть использовано для удаления дубликатов из результирующего набора данных. Однако использование DISTINCT увеличивает время выполнения запроса, поскольку база данных должна выполнить дополнительные операции для удаления дубликатов. Поэтому рекомендуется использовать DISTINCT только тогда, когда это действительно необходимо.
2. Минимизация использования ORDER BY
Ключевое слово ORDER BY используется для упорядочивания результирующего набора данных по одному или нескольким столбцам. Однако, использование ORDER BY увеличивает время выполнения запроса, особенно если сортировка выполняется по большому количеству данных. Если сортировка не является необходимой, то лучше избегать использования ORDER BY, либо использовать ее в интерфейсе программы:
- путем экспорта в excel и последующим использованием встроенных фильтров (если дальнейшая работа с данными предстоит именно в этом инструменте);
- путем сортировки BI-инструменте, если скрипт будет использован там.
Forwarded from Data Science. SQL hub
✔ Зачем инструмент dbt нужен аналитику данных
dbt — open-source проект, который решает проблему организации данных и открывает много возможностей для их трансформации, обработкии моделирования.
dbt (Data Build Tool) — инструмент, который позволяет дата-инженерам и аналитикам автоматизировать процессы тестирования, внедрения, документирования в рамках трансформации данных. Проще говоря, dbt — это всё о букве T в акрониме ELT (Extract — Transform — Load). Этот фреймворк не выгружает данные из источников, но предоставляет огромные возможности по работе с теми данными, которые уже загружены в Хранилище (в Internal или External Storage).
dbt основан на языках SQL и Jinja, с версии 1.4.* также поддерживает Python.
Основное назначение dbt — взять код, скомпилировать его в SQL, выполнить команды в правильной последовательности в хранилище
Чем полезен фреймворк
▪Контроль качества. Для бизнеса важно получать качественные данные, а для этого, в свою очередь, нужны инструменты контроля качества. dbt как инструмент позволяет реализовать любые вариации тестирования: на этапе обновления каких-либо данных мы всегда можем собрать быструю статистику по любым метрикам.
▪Хранение данных. Даже из «коробки» этот фреймворк позволяет реализовать на уровне хранилища хранение данных с историей СКД-2 (хранения технической истории, изменение атрибутов). С ним можно выстраивать снэпшоты — детальные слои с историей данных. dbt помогает собрать любую историю данных, чтобы отвечать на вопросы аналитиков и бизнеса.
▪Связывание данных в единую цепочку. Инструмент описывает ациклические зависимости (DAG) и связи, что позволяет легко анализировать цепочку преобразований данных. Когда мы используем и переиспользуем данные, выполнение этих задач связано: если что-то где-то меняется, то сказывается на других сущностях. С помощью dbt мы решаем задачу консистентности данных — устраиваем зависимость выполнения, чтобы одна сущность была рассчитана только после другой, без задержек и потери актуальности данных. Фреймворк помогает собрать в одном месте и связать всю логику — от исходных данных до итоговых результатов и их переиспользования.
▪Перенос в другие среды. Фреймворк позволяет легко переносить и настраивать разные подходы к работе моделей в различных средах: тестовые модели, продуктовый уровень, промышленный слой.
▪Настройка дополнительных возможностей. С dbt можно вписать документацию данных и работать с ними, можно настроить логирование стандартными способами и отслеживать аналитику исполнения запросов. Всё это реализуемо, поскольку у фреймворка на основе SQL и Jinja нет ограничений, кроме возможностей самих хранилищ и уровня знаний исполнителя.
Установка
Открываем терминал.
▪Документация
▪Github
@sqlhub
dbt — open-source проект, который решает проблему организации данных и открывает много возможностей для их трансформации, обработкии моделирования.
dbt (Data Build Tool) — инструмент, который позволяет дата-инженерам и аналитикам автоматизировать процессы тестирования, внедрения, документирования в рамках трансформации данных. Проще говоря, dbt — это всё о букве T в акрониме ELT (Extract — Transform — Load). Этот фреймворк не выгружает данные из источников, но предоставляет огромные возможности по работе с теми данными, которые уже загружены в Хранилище (в Internal или External Storage).
dbt основан на языках SQL и Jinja, с версии 1.4.* также поддерживает Python.
Основное назначение dbt — взять код, скомпилировать его в SQL, выполнить команды в правильной последовательности в хранилище
Чем полезен фреймворк
▪Контроль качества. Для бизнеса важно получать качественные данные, а для этого, в свою очередь, нужны инструменты контроля качества. dbt как инструмент позволяет реализовать любые вариации тестирования: на этапе обновления каких-либо данных мы всегда можем собрать быструю статистику по любым метрикам.
▪Хранение данных. Даже из «коробки» этот фреймворк позволяет реализовать на уровне хранилища хранение данных с историей СКД-2 (хранения технической истории, изменение атрибутов). С ним можно выстраивать снэпшоты — детальные слои с историей данных. dbt помогает собрать любую историю данных, чтобы отвечать на вопросы аналитиков и бизнеса.
▪Связывание данных в единую цепочку. Инструмент описывает ациклические зависимости (DAG) и связи, что позволяет легко анализировать цепочку преобразований данных. Когда мы используем и переиспользуем данные, выполнение этих задач связано: если что-то где-то меняется, то сказывается на других сущностях. С помощью dbt мы решаем задачу консистентности данных — устраиваем зависимость выполнения, чтобы одна сущность была рассчитана только после другой, без задержек и потери актуальности данных. Фреймворк помогает собрать в одном месте и связать всю логику — от исходных данных до итоговых результатов и их переиспользования.
▪Перенос в другие среды. Фреймворк позволяет легко переносить и настраивать разные подходы к работе моделей в различных средах: тестовые модели, продуктовый уровень, промышленный слой.
▪Настройка дополнительных возможностей. С dbt можно вписать документацию данных и работать с ними, можно настроить логирование стандартными способами и отслеживать аналитику исполнения запросов. Всё это реализуемо, поскольку у фреймворка на основе SQL и Jinja нет ограничений, кроме возможностей самих хранилищ и уровня знаний исполнителя.
Установка
Открываем терминал.
Запускаем команды:
pip install dbt-core #Установка
последней версии;
pip install dbt-core==1.4.0
#Установка конкретной версии.
dbt —version #Проверка установленной
версии.▪Документация
▪Github
@sqlhub
Forwarded from Postgres Guru | Базы данных 💐
🌐 Первый релизный кандидат PostgreSQL 16.
Вчера (31.08.2023) вышел первый релизный кандидат PostgreSQL 16 ! Можно сказать, что это уже полноценная 16я версия PostgreSQL, так как первый релизный кандидат, как правило, почти идентичен финальной версии. Выход финальной версии PostgreSQL 16 намечен на 14 сентября 2023 года.
В релизном кандидате исправлен один баг, связанный с деградацией производительности при конкурентном выполнении команды COPY на одной и той же таблице.
Более подробно о первом релизном кандидате 16й версии PostgreSQL можно почитать на официальном сайте:
https://www.postgresql.org/about/news/postgresql-16-rc1-released-2702/
А между тем, несмотря на скорый выход 16й версии PostgreSQL, разработчики уже трудятся над 17й версией. И уже даже прошел первый коммитфест 17й PostgreSQL.
О подробностях этого комитфеста можно почитать в статье компании Postgres Pro на Хабре:
https://habr.com/ru/companies/postgrespro/articles/757028/
В этой же статье подробно описаны отмененные и вошедшие в 16ю версию PostgreSQL изменения и нововведения.
#pgnews
Вчера (31.08.2023) вышел первый релизный кандидат PostgreSQL 16 ! Можно сказать, что это уже полноценная 16я версия PostgreSQL, так как первый релизный кандидат, как правило, почти идентичен финальной версии. Выход финальной версии PostgreSQL 16 намечен на 14 сентября 2023 года.
В релизном кандидате исправлен один баг, связанный с деградацией производительности при конкурентном выполнении команды COPY на одной и той же таблице.
Более подробно о первом релизном кандидате 16й версии PostgreSQL можно почитать на официальном сайте:
https://www.postgresql.org/about/news/postgresql-16-rc1-released-2702/
А между тем, несмотря на скорый выход 16й версии PostgreSQL, разработчики уже трудятся над 17й версией. И уже даже прошел первый коммитфест 17й PostgreSQL.
О подробностях этого комитфеста можно почитать в статье компании Postgres Pro на Хабре:
https://habr.com/ru/companies/postgrespro/articles/757028/
В этой же статье подробно описаны отмененные и вошедшие в 16ю версию PostgreSQL изменения и нововведения.
#pgnews
Forwarded from Senior SQL Developer
Оптимизация SQL-запросов в Oracle (ч.6)
1. Использование материализованных представлений
Материализованные представления (Materialized Views или MV) – это представления, которые хранятся как физические таблицы и могут автоматически обновляться при изменении данных. Использование индексированных представлений может значительно улучшить производительность запросов, особенно для запросов с большими объемами данных.
Если использование индексированных представлений в вашей БД ограничено, их можно заменить на обычные предрасчетные таблицы, обновление которых настраивается с помощью ETL-инструментов.
2. Минимизация использования множественных вложенных подзапросов
Множественные вложенные подзапросы могут быть плохой практикой из-за следующих причин:
- Низкая производительность: каждый подзапрос будет выполняться отдельно, что может привести к повышенной нагрузке на сервер базы данных и увеличению времени выполнения запроса.
- Сложность чтения и понимания: чем больше вложенных подзапросов, тем сложнее становится чтение и понимание запроса. Это может затруднить поддержку и обслуживание кода в будущем.
- Ограниченность возможностей оптимизации: при использовании множественных вложенных подзапросов оптимизатор базы данных может иметь ограниченные возможности для оптимизации запроса и выбора оптимального плана выполнения.
Как вариант, вложенные подзапросы можно легко заменить на CTE.
1. Использование материализованных представлений
Материализованные представления (Materialized Views или MV) – это представления, которые хранятся как физические таблицы и могут автоматически обновляться при изменении данных. Использование индексированных представлений может значительно улучшить производительность запросов, особенно для запросов с большими объемами данных.
Если использование индексированных представлений в вашей БД ограничено, их можно заменить на обычные предрасчетные таблицы, обновление которых настраивается с помощью ETL-инструментов.
2. Минимизация использования множественных вложенных подзапросов
Множественные вложенные подзапросы могут быть плохой практикой из-за следующих причин:
- Низкая производительность: каждый подзапрос будет выполняться отдельно, что может привести к повышенной нагрузке на сервер базы данных и увеличению времени выполнения запроса.
- Сложность чтения и понимания: чем больше вложенных подзапросов, тем сложнее становится чтение и понимание запроса. Это может затруднить поддержку и обслуживание кода в будущем.
- Ограниченность возможностей оптимизации: при использовании множественных вложенных подзапросов оптимизатор базы данных может иметь ограниченные возможности для оптимизации запроса и выбора оптимального плана выполнения.
Как вариант, вложенные подзапросы можно легко заменить на CTE.
Forwarded from Хабр
Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64
В этой статье мы немного проанализируем код Windows XP, a также соберём калькулятор c использованием GCC x64 в среде Windows 10. Будут показаны ошибки, с которыми автор столкнулся в процессе сборки, и подробно расписаны способы их решения. В конце будет продемонстрирован рабочий билд аппликации calc.exe.
В этой статье мы немного проанализируем код Windows XP, a также соберём калькулятор c использованием GCC x64 в среде Windows 10. Будут показаны ошибки, с которыми автор столкнулся в процессе сборки, и подробно расписаны способы их решения. В конце будет продемонстрирован рабочий билд аппликации calc.exe.
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Senior SQL Developer
Функция WEEK в MySQL
Функция WEEK используется для извлечения номера недели из даты.
Базовый синтаксис функции выглядит следующим образом:
WEEK( date_value, [ mode ] )
- date_value - значение даты или даты/времени, из которого извлекается неделя.
- mode - Необязательный. Он используется для указания дня недели. Это может быть один из следующих вариантов:
Примечание:
1. Функция WEEK возвращает значение от 0 до 53 или от 1 до 53 в зависимости от указанного режима.
2. Если вы используете MySQL 4.0.14+, а режим не указан, функция WEEK будет использовать значение в системной переменной default_week_format в качестве режима.
3. Если вы используете версию MySQL, которая старше 4.0.14, а режим не указан, функция WEEK будет использовать 0 в качестве режима.
4. Функция WEEKOFYEAR возвращает то же самое, что и функция WEEK с синтаксисом WEEK (date_value, 3).
Функция WEEK используется для извлечения номера недели из даты.
Базовый синтаксис функции выглядит следующим образом:
WEEK( date_value, [ mode ] )
- date_value - значение даты или даты/времени, из которого извлекается неделя.
- mode - Необязательный. Он используется для указания дня недели. Это может быть один из следующих вариантов:
Примечание:
1. Функция WEEK возвращает значение от 0 до 53 или от 1 до 53 в зависимости от указанного режима.
2. Если вы используете MySQL 4.0.14+, а режим не указан, функция WEEK будет использовать значение в системной переменной default_week_format в качестве режима.
3. Если вы используете версию MySQL, которая старше 4.0.14, а режим не указан, функция WEEK будет использовать 0 в качестве режима.
4. Функция WEEKOFYEAR возвращает то же самое, что и функция WEEK с синтаксисом WEEK (date_value, 3).
Forwarded from Rozetked (Антон Курилов)
This media is not supported in your browser
VIEW IN TELEGRAM
Революция в мире мемосоздания
Приложение Paint теперь умеет автоматически удалять фон в изображении. Пока фишку могут опробовать участники бета-тестирования Windows 11.
Осталось добавить слои.
rozetked.me/news/30443
Приложение Paint теперь умеет автоматически удалять фон в изображении. Пока фишку могут опробовать участники бета-тестирования Windows 11.
Осталось добавить слои.
rozetked.me/news/30443
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM