Канал Николая Валиотти об аналитике и визуализации данных, data science и BI
SELECT kind,
name,
weight,
age,
AVG(age) OVER (PARTITION BY kind ORDER BY weight
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM animals
А что насчет UNBOUNDED FOLLOWING?
UNBOUNDED FOLLOWING работает примерно так же, как UNBOUNDED PRECEDING. Посчитаем средний возраст питомцев внутри одного вида, взяв окно с текущего питомца до последнего по отсортированному по возрастанию весов животных списку. Для этого нам нужно использовать ключевые слова BETWEEN, CURRENT ROW (с которыми мы уже отлично подружились), а также UNBOUNDED FOLLOWING.
SELECT kind,
name,
weight,
age,
AVG(age) OVER (PARTITION BY kind ORDER BY weight
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
FROM animals
Пишите в комментариях, какую оконную функцию разобрать следующей, и оставляйте реакцию, если вам нравится цикл постов про SQL!
#leftjoin_sql
SELECT kind,
name,
weight,
age,
AVG(age) OVER (PARTITION BY kind ORDER BY weight
ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)
FROM animals
#leftjoin_sqlbigquery-public-data.usa_names.usa_1910_2013 WHERE state = 'FL' AND gender = ‘M' ORDER BY number DESC LIMIT 10;
◾️ Объяснять код, который вы (или кто-то другой) написали
◾️ Разделять код на шаги и создавать комментарии, поясняющие логику алгоритма
◾️ Оптимизировать уже написанный код
Сервис доступен по подписке на месяц и на год, а также существует опция бесплатного 30-дневного пробного периода.
Оставляйте 🔥, если думаете, что CodeSquire – полезный сервис, и 🤨, если думаете, что проще будет работать без него.SELECT user_id, order_date, receipt_no, amount, amount - (LAG(amount, 1, amount) OVER (PARTITION BY user_id ORDER BY order_date)) as diff FROM orders
SELECT user_id, order_date, LEAD(order_date) OVER (PARTITION BY user_id ORDER BY order_date) as next_order_date, receipt_no, amount FROM ordersРезультат запроса в первом комментарии под постом 👇 Теперь попробуйте написать запрос к табличке orders, который посчитает насколько каждая покупка каждого пользователя больше или меньше предыдущей (если предыдущей покупки не было, возьмите текущую суммку покупки и покажите 0 как разницу). #leftjoin_sql