BigQuery становится все более популярным инструментом для работы с данными. С ростом его распространенности все более ценными становятся и знания о нем. При этом в повседневной практике могут возникать совершенно разные ситуаций, от которых невозможно перестраховаться на 100%. Можно в частности случайно повредить, неверно дозаполнить, а может быть и вовсе уничтожить не те партиции или целую таблицу. В этой заметке мы рассмотрим способы, с помощью которых можно исправить допущенные недоразумения.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3❤1
При обработке массивов данных, в процессе создания хранимых процедур, возникает необходимость сравнения нулевых значений. Многие разработчики путаются в обработке нулевых значений. Когда говорится о значении, равном NULL, то на самом деле имеется в виду, что оно не имеет никакого значения. Это сильно отличается от числа равного нулю, или строки, являющейся пустой (или нулевой длинны). Именно поэтому нет возможности сравнить значение с NULL используя базовые операторы сравнения IS NULL или IS NOT NULL. Значение NULL – это состояние, в котором находится переменная или столбец, а не значение, которое они содержат.
Решение данной задачи возможно осуществить с помощью встроенного функционала настройки драйвера ODBC и поставщика OLE DB клиента SQL Server, для этого воспользуюсь инструкцией SET ANSI_NULLS, которая позволяет настроить SQL Server для использования операторов сравнения со значениями NULL, установив параметры SET ANSI_NULLS ON или SET ANSI_NULLS OFF.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
DBDiagram — бесплатный и простой инструмент для построения диаграмм связей для баз данных
С его помощью вы сможете напрямую генерировать операторы SQL, при этом делясь результатом с вашими коллегами
У приложения также есть достаточно тесная интеграция с веб-фреймворками, такими как Django, Rails и т.д
Стоимость: #бесплатно (но есть платная подписка)
#db #sql #базы_данных
@sqlhub
С его помощью вы сможете напрямую генерировать операторы SQL, при этом делясь результатом с вашими коллегами
У приложения также есть достаточно тесная интеграция с веб-фреймворками, такими как Django, Rails и т.д
Стоимость: #бесплатно (но есть платная подписка)
#db #sql #базы_данных
@sqlhub
👍14🔥4❤1
Проекты , которые реально помогут в разработке и помогут прокачать навыки программирования.
Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1🔥1
Трюк дня. Количество вхождений строки в поле в MySQL
Есть таблица
Напишите MySQL запрос, который подсчитает количество вхождений значения ‘
Ожидаемый результат:
Решение:
#tips
@sqlhub
Есть таблица
items
со следующими данными:id desc
1 val test test val
2 val test
3 test test test
4 valvalvalvalval
Напишите MySQL запрос, который подсчитает количество вхождений значения ‘
val
‘ для каждого desc
. Ожидаемый результат:
2
1
0
5
Решение:
SELECT
ROUND (
(LENGTH (desc) - LENGTH (
REPLACE (desc, ‘val‘,‘‘)
)) / LENGTH(‘val‘)) AS c
FROM items;
#tips
@sqlhub
👍13❤1🔥1
Данная книга отличается широким охватом как тем (от азов SQL до таких сложных вопросов, как аналитические функции и работа с большими базами данных), так и конкретных баз данных (MySQL, OracleDatabase, SQL Server) и особенностей реализации тех или иных функциональных возможностей SQL на этих серверах.Книга идеально подходит в качестве учебника для начинающего разработчика в области баз данных. В ней описаны все возможные применения языка SQL и наиболее распространенные серверы баз данных.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3👍3
Рассмотрены готовые рецепты для решения практических задач при работе с СУБД Oracle, DB2, SQL Server, MySQL и PostgreSQL. Описаны извлечение записей из таблиц, сортировка результатов запросов, принципы работы с несколькими таблицами, обработка запросов с метаданными. Рассказывается о способах поиска данных средствами SQL,о составлении отчетов и форматировании результирующих множеств, работе с иерархическими запросами. Рассматривается использование оконных функций, обобщенных табличных выражений (ОТВ), сбор данных в блоки, формирование гистограмм, текущих сумм и подсумм, агрегация скользящего диапазона значений. Описан обход строки и ее синтаксический разбор на символы, приведены способы упрощения вычислений внутри строки.
Во втором издании учтены все изменения в синтаксисе и архитектуре актуальных реализаций SQL.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3❤2
В середине 2015 года, в MySQL 5.7.8 появился тип данных JSON. С тех пор он применяется, чтобы избегать жёстких определений столбцов и сохранять документы JSON всех форм и размеров: логи аудита, параметры конфигурации, сторонние полезные нагрузки, пользовательские поля и др.
Хотя в MySQL есть функции чтения и записи данных JSON, вы быстро обнаружите, что явно не хватает прямого индексирования столбцов с JSON.
В других базах данных в качестве способа прямого индексирования столбца JSON обычно применяется обобщённый обратный индекс, или GIN-индекс (Generalized INverted index). В MySQL GIN-индексов нет, поэтому индексировать весь сохранённый документ JSON напрямую нельзя, зато возможно косвенно индексировать части JSON.
В зависимости от версии MySQL есть два варианта. В MySQL 5.7 нужно создавать промежуточный сгенерированный столбец, но с версии MySQL 8.0.13 можно создавать функциональный индекс напрямую.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
Data Science. SQL hub
SQL – концептуально странный язык. Вы пишете ваше приложение на одном языке, скажем, на JavaScript, а затем направляете базе данных команды, написанные на совершенно другом языке – SQL. После этого база данных компилирует и оптимизирует эту команду на SQL, выполняет её и возвращает вам данные. Такой метод кажется ужасно неэффективным, но, всё-таки, ваше приложение может проделывать сотни таких операций в секунду. Просто безумие!
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1
Учу SQL и понимаю, что схема Join-ов основанная на пересекающихся кругах не корректна. Результатом джойнов всегда идет увеличение таблицы в ширь. А по схеме с кругами площадь кругов почти везде не увеличивается. И также круговая схема не показывает заполнение NULL-ами при LEFT и RIGHT джойнах. Предлагаю схему на прямоугольниках, где закрашенный красный это результирующая таблица джойнов, черный это заполнение NULL-ами. Серые прямоугольники оставлены просто для наглядности и ничего не означают.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29❤3🥰1🤔1
Данная характеристика позволяет читать данные обычным пользователям
@sqlhub | #Interesting #Database
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
Вы можете использовать это руководство целиком, сделать его форк или создать своё на его основе. Цель — определить, какой стиль вам подходит больше, и придерживаться его. Если вы хотите предложить изменение или исправить ошибку, откройте Issue или создайте Pull Request на GitHub’е.
Рекомендации, описанные в этом руководстве, во многом пересекаются с описанными в книге Джо Селко «Стиль программирования Джо Селко на SQL» (оригинал: SQL Programming Style). Это, в частности, найдут полезным те, кто уже знаком с этой книгой. Тем не менее автор этого руководства в некоторых аспектах более категоричен, нежели Джо Селко, а в других, напротив, более гибок. И, конечно, нельзя не отметить, что это руководство значительно короче и лаконичнее книги Селко — здесь вы не встретите ни весёлых историй из жизни, наглядно объясняющих, как и почему лучше не делать, ни длинных повествований, мотивирующих на использование той или иной рекомендации.
Руководство написано в формате Markdown, что позволяет легко включить его в проект или просто сослаться на него оттуда, что гораздо удобнее, нежели работать с большой бумажной книгой.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤2👎1
Вопросы по SQL на собеседованиях — обычное дело, и чтобы не завалиться, нужно хорошо понимать, как работать с базами данных. В этом списке представлены основные вопросы и задачи по SQL, которые часто встречаются на собеседованиях, а также ответы на них.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2❤1
Научитесь делать приложения, на которых можно реально заработать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
Напишите запрос, который будет идентифицировать возвращающихся активных пользователей. Вернувшийся активный пользователь — это пользователь, совершивший вторую покупку в течение 7 дней после любой другой покупки. Выведите список user_id этих вернувшихся активных пользователей.
amazon_transactions
id:int
user_id:int
item:varchar
created_at:datetime
revenue:int
Ответ
SELECT
DISTINCT(a.user_id)
FROM amazon_transactions a
JOIN amazon_transactions b
ON a.user_id = b.user_id
WHERE a.created_at - b.created_at BETWEEN 0 AND 7
AND a.id != b.id
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥3❤2👎1🤬1
Может запускать миграции в виде файлов SQL на диске или встроенных в функции Go. Это означает, что вы можете отправить автономный двоичный файл для выполнения миграций без каких-либо зависимостей. Поддерживает неупорядоченные миграции. Имеется поддержка БД: Redshift, MySQL, Postgres, Clickhouse и другие.
Стоимость: #бесплатно.
$ go install github.com/pressly/goose/v3/cmd/goose@latest
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4❤1
Найдите общее количество загрузок для платных и бесплатных пользователей по дате. Включайте только те записи, в которых неоплачиваемые клиенты имеют больше загрузок, чем платные клиенты. Вывод должен быть сначала отсортирован по самой ранней дате и содержать дату в 3 столбцах, бесплатные загрузки, платные загрузки.
ms_user_dimension
user_id:int
acc_id:int
ms_acc_dimension
acc_id:int
paying_customer:varchar
ms_download_facts
date:datetime
user_id:int
downloads:int
Ответ
with out AS(select date
, Sum (downloads) Filter(Where paying_customer = 'no') as non_paying
, Sum (downloads) Filter(Where paying_customer = 'yes') as paying
From ms_download_facts fact
Left Join ms_user_dimension a
on fact.user_id = a.user_id
Join ms_acc_dimension acc
on a.acc_id = acc.acc_id
Group by date
order by date)
Select date , non_paying , paying
From out
Where non_paying > paying
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2🔥1
Когда вы только начинаете изучать SQL, нужно как можно больше практики. Хорошо, когда есть реальные задачи на работе, на которых можно практиковаться. Но если их нет - то эти бесплатные сервисы помогут получить необходимую практику и улучшить свой уровень.
Кстати, в телеграм канале у меня был пост о том, как выучить SQL быстрее, его вы можете посмотреть тут.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4🔥2
📌 Основы SQL (видеокурс)
1 – Введение
2 – Нормализация
3 – Редактирование таблиц, расширенные возможности SELECT, функции
4 – Триггеры
5 – Транзакции
#course
@sqlhub
1 – Введение
2 – Нормализация
3 – Редактирование таблиц, расширенные возможности SELECT, функции
4 – Триггеры
5 – Транзакции
#course
@sqlhub
YouTube
Основы SQL - #1 – Введение
Освой профессию frontend-разработчика за 6 месяцев и становись востребованным IT-специалистом со знанием топовых технологий и 5 крутыми проектами в портфолио:
https://loftschool.com/professions/frontend-developer/?utm_source=youtube&utm_medium=article&utm_campaign=sql1…
https://loftschool.com/professions/frontend-developer/?utm_source=youtube&utm_medium=article&utm_campaign=sql1…
👍14❤6🔥1