Where is data, Lebowski
219 subscribers
83 photos
2 videos
83 links
Канал про разное в data-мире:
- от библиотек визуализации до data egineering
- от графиков до элементов разработки
- от .csv до API
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Какую штуку нашел😎
Пакет ipython-sql

SQL внутри Jupyter. Magic %%sql позволяет писать SQL-запросы прямо в ячейке Jupyter и получать результат в виде pd.DataFrame, всё как мы любим❤️

Подготовил для вас google colab, в нем автоматически подготавливается БД (ну а вдруг её у вас нет😉) и показаны примеры работы с расширением.

Расширение имеет право на жизнь, но есть минусы:
- нет подсветки синтаксиса SQL (да, к хорошему привыкаешь быстро)
- нашлись ошибки (расширение падает с ошибкой при использовании оконных функций)

Попробуйте посмотреть🤨
#python #sql #jupyter
👍5
🎙Хей-хей, сегодня небольшой квиз

И не говорите, что вы не любите порешать интересные задачки на Python или SQL🤩

Не часто в описании вакансии встретишь намеки на тестовое, а тут на днях обнаружил такое:


Напишите запрос, который найдет три машины, получившие наибольшее кол-во чаевых в апреле 2022 года.
Выведите, как изменялась эта сумма в последующие месяцы в процентах по сравнению с предыдущим в таблице со столбцами:
- taxi_id
- year_month
- tips_sum
- tips_changes

В качестве источника используйте bigquery-public-data.chicago_taxi_trips


Устроим небольшой SQL challenge💪

В комменты добавлю видео где найти этот датасет 🎥

Буду ждать ваших решений, если возникнут проблемы, смело пишите в комменты, разберемся🙃

Итого в решении должно быть:
- запрос 1 (топ 3 машины)
- запрос 2 (сравнение величины чаевых за месяц с предыдущим в процентах)
- будет круто если график изменения чаевых реализуете в виде дашборд 📈 (варианты: Tableau Public, Google Data Studio, Yandex DataLens, Redash) и поделитесь ссылкой
➖➖➖➖➖➖➖➖➖➖

Ну, что погнали😉

#sql #dashboard #challenge
👍2🐳1
Задача 1️⃣
.
На очереди первая задачка по SQL, кажется, что она самая популярная,она была в двух вариантах:
1. Даны следующие таблицы
a - 5 rows
b - 10 rows

Выполняется такой запрос:
select count(*)
from a
unknown join b on unknown (a.a=b.b)

Какое максимальное и минимальное количество может быть для разных join? Примечание: значения в таблицах уникальны.

2. Даны таблицы t1 и t2
t1 t2
1 3
2 4
3 5
4 6
5 7

Что получится при разных видах JOIN

.
Ответы оставляем в комментариях👇 ps: тут конечно могут помочь диаграммы Венна (кружочки), но они имеют изъян.
#вопросы #собес #sql
​​Задачки 2️⃣ и 3️⃣

Дана таблица:

CREATE TABLE IF NOT EXISTS prices (
id bigint not null,
price int4 not null,
dt date not null
);

Пример данных:
id price dt
1 100 2021-01-01
1 110 2021-05-05

В таблице prices хранятся данные по ценам товаров. В этой таблице есть другие цены и другие товары, эти приведены для примера.
При изменении цены записывается новая строка с датой начиная с которой это цена действует.
Цена действует до тех пор, пока она не сменится другой ценой.
Надо написать параметризованный запрос, который по id и dt вернет цену товара на этот день.
Например:id=1, dt=2021-01-02 => price=100id=1, dt=2021-06-01 => price=110.


+ дополнительный вопрос от меня Какой механизм реализован в этой таблице?
——————————————————

Дана таблица Client (id, email, phone)
1. Найти все email которые встречаются в таблице более 2х раз.
2. Вывести id, email, email_дуплицирован(1,0)

☝️1 и 2 - два разных запроса

.
Жду ваших решений в комментариях и помните, у задачки необязательно есть одно единственное решение😉
#вопросы #собес #sql
​​Задача 4️⃣ (в двух частях)
.
Дана таблица:
CREATE TABLE IF NOT EXISTS deliveries (
id bigint not null,
dt date not null,
id_supplier bigint not null,
id_product bigint not null,
quantity int4 not null,
price decimal(16, 4)
);

Пример данных:
id dt id_supplier id_product quantity price
1 2021-01-01 2 134 5 10.5
2 2021-05-05 1 135 10 11.0

Задача 2.1
В таблице хранятся данные о поставках, каждая поставка имеет:
свой уникальный id, дату совершения поставки dt, данные о поставщике id_supplier и товаре id_product, количестве штук товара в поставке quantity, цене одной штуки price.
Необходимо найти поставщика, который поставил нам товаров на наибольшую сумму денег.

Задача 2.2

Дополнительно дан справочник:
CREATE TABLE IF NOT EXISTS supplier (
id bigint not null,
name VARCHAR(200) not null
);

Пример данных:
id name
1 Поставщик1
2 Поставщик2

Как найти поставщиков которые ничего не поставляли, если рядом есть справочник поставщиков?

.
Жду ваших верных решений😎
#вопросы #собес #sql
​​Задача 5️⃣
.
Продолжаем серию SQL задачек, на очереди аналитическая задачка.
.
Посчитать среднее время нахождения в статусе "Подтверждён" , за которым следовал статус "Доставлен" для заказов , созданных в этом году.

-- Таблица, со статусами заказа
create table OrderStatusChangeLog
(
order_id INTEGER
, status_id INTEGER
, time_changed DATETIME
);
comment on column OrderStatusChangeLog.order_id is 'ID заказа';
comment on column OrderStatusChangeLog.status_id is 'ID статуса заказа';
comment on column OrderStatusChangeLog.time_changed is 'Время изменения заказа';

Пример (сэмпл) данных в таблице:
+--------+---------+-------------------+
|order_id|status_id|time_changed |
+--------+---------+-------------------+
|14324 |1 |01.05.2022 10:00:01|
|14324 |2 |01.05.2022 10:25:17|
|14324 |10 |01.05.2022 10:30:55|
|14324 |7 |01.05.2022 10:31:24|
|14324 |10 |01.05.2022 15:30:54|
|14324 |5 |04.05.2022 12:22:32|
|1468 |1 |01.05.2022 10:00:01|
|1468 |2 |01.05.2022 11:25:23|
|1468 |10 |01.05.2022 11:30:48|
|67825 |1 |01.05.2022 10:00:01|
|67825 |2 |01.05.2022 10:25:44|
|67825 |10 |01.05.2022 10:30:05|
|67825 |5 |08.05.2022 16:32:49|
+--------+---------+-------------------+


-- Таблица-справочник статусов
create table OrderStatus
(
status_id INTEGER
, status_name VARCHAR(255)
);
comment on column OrderStatus.status_id is 'ID статуса заказа';
comment on column OrderStatus.status_name is 'Наименование статуса заказа';

Пример (сэмпл) данных в таблице:
+---------+-----------+
|status_id|status_name|
+---------+-----------+
|1 |Новый |
|2 |Оплачен |
|10 |Подтверждён|
+---------+-----------+


-- Таблица с заказами
create table Orders
(
order_id INTEGER PRIMARY KEY
, time_created DATETIME
, client_id INTEGER
, status_id INTEGER
);
comment on column Orders.order_id is 'ID заказа';
comment on column Orders.time_created is 'Время создания заказа';
comment on column Orders.client_id is 'ID клиента';
comment on column Orders.status_id is 'ID текущего статуса заказа';

Пример (сэмпл) данных в таблице:
+--------+-------------------+---------+---------+
|order_id|time_created |client_id|status_id|
+--------+-------------------+---------+---------+
|1468 |01.05.2022 10:00:01|234 |10 |
|14324 |01.05.2022 10:00:01|738294 |5 |
|3421987 |10.03.2021 19:03:55|761285 |5 |
+--------+-------------------+---------+---------+

.
Дерзайте, задачку точно можно решить не одним способом😉 Используйте все ваши знания и творческий подход😎
#вопросы #собес #sql
👍2