Мне нужно создать производную таблицу и рассчитать среднее, максимальное и общее количество поездок, которые совершил пользователь, используя таблицу путешествий. Результаты должны добавлять различные идентификаторы USER_ID к среднему количеству поездок, совершенных пользователем, максимальному количеству поездок, совершенных одним пользователем, и общему количеству поездок, совершенных всеми пользователями.
[Текущий запрос]
SELECT
COUNT(TRAVEL_ID) AS NUM,
DISTINCT USER_ID
FROM
(SELECT
AVG(NUM) AS Average,
MAX(NUM) AS Maximum,
NUM AS Total
FROM TRAVELS) AS a;
[Ожидаемые результаты]
Средний 1,5714 | Максимум 2 | Всего 11
Во внутреннем запросе подсчитайте количество поездок для каждого пользователя с помощью group by
, после чего вы можете сделать окончательные агрегации.
select
avg(cnt) as average,
max(cnt) as maximum,
sum(cnt) as total
from (
select
USER_ID,
count(TRAVEL_ID) as cnt
from TRAVELS
group by
USER_ID
) as a
Производная таблица также содержит агрегатную функцию (счетчик). Дело в том, что вам нужно сначала получить информацию об уровне USER_ID, после чего вы можете выполнять дальнейшие агрегации. Пожалуйста, дайте мне знать, если это сработает, или примите мой ответ, если это сработает.
Да, это сработало, я застрял на этом на несколько часов, поэтому я благодарен за помощь!
Ясно, тогда я могу использовать агрегатные функции только после создания в производной таблице? Спасибо!