Есть таблица 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;
Но не понимаю, где и в какой последовательности нужно вставить запрос с уточнением по годам и получить среднее значение по результирующей таблице. В идеале - подсказать в какой части документации \ какую статью нужно прочитать.
Для расчета среднего нужно воспользоваться функцией 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 поздних версиях.
Возникла проблема с кодом, не знаю, как ее решитьПишет, что нельзя указывать тип возвращаемого значения для конструктора