Advent of SQL. Days 7-8 ☕️ На 7й день мы распределяли посетителей по разным какао-станциям на основе их вкусовых предпочтений. Для этого нужно было вспомнить про пересечения и агрегацию массивов Получилось такое условие джойна, оно возвращает true, если массивы пересекаются: ``` left join available_cocoa_cars c on p.favorite_mixins && c.available_mixins``` А так можно красиво собрать все доступные какао-станции по каждому посетителю. Про сортировку даже не вспомнила, что ее можно туда засунуть: ``` select passenger_name, array_agg(c.car_id order by c.car_id) from ... group by passenger_name``` 🌄 На 8й день произошло целое открытие для меня. Все это время существовала концепция named window, а я ни разу ее не видела??😱 Мы определяем окно в самом конце запроса типо как cte и можем переиспользовать название окна в расчетах столбцов: ``` select product_id, price as product_price, lead(price) over w as previous_price, row_number() over w as rn from price_changes window w as ( partition by product_id order by effective_timestamp desc )``` Причем этот синтаксис работает просто везде: PostgreSQL, MySQL, ClickHouse, Spark SQL, Oracle, Vertica... Что? 😍 Почему это так удобно, но нигде не используется? 📍 Advent of SQL (с впн) 📍 SQL Advent Calendar (с впн) 📍 Мои решения
Advent of SQL. Days 7-8 ☕️ На 7й день мы распределяли посетителей по разным…
Из этого канала
- #518Хотите побыть Дедом Морозом? Новый год - это пора чудес✨ И сегодня вы можете…
Хотите побыть Дедом Морозом? Новый год - это пора чудес✨ И сегодня вы можете помочь исполнению новогоднего чуда! У нас в ламоде проводится конкурс мерча.
- #519"Advent of SQL. Day 9 🗓️ День 9: нужно вытащить из вложенного json нужные поля.…
"Advent of SQL. Day 9 🗓️ День 9: нужно вытащить из вложенного json нужные поля. Я так и не могу запомнить, как правильно это делается в постгре, поэтому делала…
- #520Advent of SQL. Day 10 🏰 Вот такую конструкцию я 200% ни разу не встречала и не…
Advent of SQL. Day 10 🏰 Вот такую конструкцию я 200% ни разу не встречала и не подозревала о ней! В задаче нужно было перенести данные из таблицы1 в таблицу2 и…
- #516"Advent of SQL. Days 5-6 На пятой задаче было топ-3 через rownumber и cte - мы…
"Advent of SQL. Days 5-6 На пятой задаче было топ-3 через rownumber и cte - мы с подобной штукой уже встречались ранее: ``` rownumber() over(partition by…
- #515Advent of SQL. Day 4 Задачка на приведение данных к единому формату и…
Advent of SQL. Day 4 Задачка на приведение данных к единому формату и применение like, ilike, case when, union В одном из case мне нужно было сделать…