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
🗄️⚠️ Как намеренно расставленные ошибки помогают сделать SQL-код легко поддерживаемым
В этой статье мы рассмотрим различные способы вызова ошибок, которые помогут упростить поддержку SQL-кода в будущем.
➡️ Читать дальше
@sqlhub
В этой статье мы рассмотрим различные способы вызова ошибок, которые помогут упростить поддержку SQL-кода в будущем.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥1
Напишите запрос, вычисляющий разницу между самыми высокими зарплатами в отделах маркетинга и инженерии. Выведите только абсолютную разницу в зарплатах.
db_employee
id:int
first_name:varchar
last_name:varchar
salary:int
department_id:int
db_dept
id:int
department:varchar
Ответ:
select abs(max(salary) filter (where department = 'marketing') - max(salary) filter (where department = 'engineering'))
from db_employee emp
LEFT JOIN db_dept dept on emp.department_id = dept.id
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🔥1
Найдите самую высокую цель, достигнутую сотрудником или сотрудниками, работающими под менеджером с id 13. Выведите имя сотрудника/сотрудников и достигнутую цель. Решение должно показывать самую высокую цель, достигнутую при manager_id=13, и какие сотрудники ее достигли.
salesforce_employees
id:int
first_name:varchar
last_name:varchar
age:int
sex:varchar
employee_title:varchar
department:varchar
salary:int
target:int
bonus:int
email:varchar
city:varchar
address:varchar
manager_id:int
Ответ:
select first_name, target
from salesforce_employees
where manager_id=13 and
target=(select max(target) from salesforce_employees where manager_id=13)
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥2
Найдите сотрудника с самой высокой зарплатой в каждом отделе. Выведите название отдела, имя сотрудника и соответствующую зарплату.
employee
id:int
first_name:varchar
last_name:varchar
age:int
sex:varchar
employee_title:varchar
department:varchar
salary:int
target:int
bonus:int
email:varchar
city:varchar
address:varchar
manager_id:int
ОТВЕТ:
SELECT department as department,
first_name as employee_name,
salary
FROM employee
WHERE (department, salary) IN
(SELECT department, MAX(salary)
FROM employee
GROUP BY department)
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥2❤1