Трюк дня. Количество вхождений строки в поле в 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
В порядке изучения с "нуля":
https://sqlzoo.net/ еще несколько тренажеров с задачками для прокачивания практических навыков
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥7❤1
🚀 Big Data - действительно полезный канал для всех, кто работает с данными.
- огромный набор бесплатных наборов данных
- инструменты для работы с данными
- обучающие материалы для датасаентистов
- лучшие практики Машинного Обучения
- перевод книг и статей
🔥 Подписаться
- огромный набор бесплатных наборов данных
- инструменты для работы с данными
- обучающие материалы для датасаентистов
- лучшие практики Машинного Обучения
- перевод книг и статей
🔥 Подписаться
👍6❤1🔥1
Найдите среднее количество ванных комнат и спален для каждого типа собственности в городе. Выведите результат вместе с названием города и типом недвижимости.
airbnb_search_details
id:int
price:float
property_type:varchar
room_type:varchar
amenities:varchar
accommodates:int
bathrooms:int
bed_type:varchar
cancellation_policy:varchar
cleaning_fee:bool
city:varchar
host_identity_verified:varchar
host_response_rate:varchar
host_since:datetime
neighbourhood:varchar
number_of_reviews:int
review_scores_rating:float
zipcode:int
bedrooms:int
beds:int
Ответ
SELECT city, property_type, avg(bedrooms) as n_bedrooms_avg, avg(bathrooms) as n_bathrooms_avg
FROM airbnb_search_details
GROUP BY city, property_type
ORDER BY city
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍10🔥3
Airtable представляет собой платформу из разряда low-code, т.е. практически не требует написания программного кода. Она позволяет любому создавать реляционные базы и визуализировать данные, не требуя для этого даже знания SQL и Excel.
Подумайте, сколько времени вы бы потратили на выполнение следующего задания:
создать базу данных с записями;
выбрать конкретные данные по заданным условиям;
отобразить отфильтрованные данные в виде диаграммы (столбчатой, круговой);
поделиться данными проекта онлайн.
Задание простое и выполнимое посредством Excel. Но оно имеет тенденцию к усложнению и, как следствие, требует больше времени. Выбирая Airtable, вы получаете значительное преимущество: сразу начинаете работать с удобным онлайн GUI.
В статье мы рассмотрим основные преимущества и возможности Airtable на практическом примере.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2🔥2