Получить среднее число заказов пользователей по годам

356
29 июля 2022, 03:50

Есть таблица orders:

id_o,user_id,price,o_date
81,1,"539,000",2016-01-01
84,1,"153,300",2016-02-15
87,2,"55,300",2016-03-12
88,2,"752,500",2016-04-19
89,2,"4410,000",2016-05-20
91,1,"539,000",2017-01-01
94,1,"153,300",2017-02-15
97,2,"55,300",2017-03-12
98,2,"752,500",2017-04-19
99,3,"4410,000",2017-05-20

Подскажите, как из неё получить среднее число заказов (id_0) по юзерам (user_id) по годам? В итоге должно получиться две цифры - среднее число заказов на юзера в 2016 и 2017 гг.

Что сделано:

Я получил промежуточную таблицу со количеством заказов на каждого юзера :

SELECT COUNT(id_o) FROM orders 
    GROUP BY user_id;

Но не понимаю, где и в какой последовательности нужно вставить запрос с уточнением по годам и получить среднее значение по результирующей таблице. В идеале - подсказать в какой части документации \ какую статью нужно прочитать.

Answer 1

Для расчета среднего нужно воспользоваться функцией avg.

select user_id, avg(id_o) as avg
from orders
where user_id = 153
group by year(o_date)

Главное здесь извлечь год из даты year(o_date).

Расчета среднего по всем пользователям:

select user_id, avg(id_o) over (PARTITION BY user_id) as avg
from orders
group by year(o_date)

Это будет работать в MariaDb / PostgreSql поздних версиях.

READ ALSO
Ошибка E0963. Класс ругается на конструктор

Ошибка E0963. Класс ругается на конструктор

Возникла проблема с кодом, не знаю, как ее решитьПишет, что нельзя указывать тип возвращаемого значения для конструктора

409
Решение задачи на merge_sort на с++

Решение задачи на merge_sort на с++

Возникли проблемы со следующей задачей:

316
установка sfml под atom

установка sfml под atom

Просьба подсказать как работать с sfml под atom:

387