|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
Привет люди бодрые, ищу помощи в составлении правильного запроса. Пытался своими силами 3 дня, но максимум смог сделать общее количество покупок для курса, А задача следующая: Написать запрос, который выведет для каждого курса среднее количество покупок в месяц Я смог сделать только общее количество покупок SELECT name, COUNT(subscription_date) FROM Courses JOIN Subscriptions ON Courses.id = Subscriptions.course_id GROUP BY Subscriptions.course_id; А так же среднее за год SELECT name, COUNT(subscription_date) / 12 FROM Courses JOIN Subscriptions ON Courses.id = Subscriptions.course_id GROUP BY Subscriptions.course_id; https://prnt.sc/pvrted https://prnt.sc/pvrtl8 https://prnt.sc/pvrtsa Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2019, 11:46 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
А про агрегирующую функцию AVG знаете чего? если она есть в этом диалекте... COUNT(subscription_date) / 12 Это явно не "среднее за год", а двенадцатая часть общего количества. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2019, 11:50 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
982183, Слышал, пробовал. Пока не получается. SELECT name, AVG(COUNT(subscription_date)) FROM Courses JOIN Subscriptions ON Courses.id = Subscriptions.course_id GROUP BY Subscriptions.course_id; Если так, то ошибка по групировке ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2019, 12:21 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
AVG(COUNT(subscription_date)) - неправильно AVG(subscription_date) - правильно COUNT(subscription_date) - правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2019, 12:33 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
"для каждого курса среднее количество покупок в месяц" Т.Е сначала надо подсчитать количество покупок в разрезе курсов и месяцев А потом из получившегося посчитать среднее в разрезе курсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2019, 13:16 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
982183, Проблема в том что покупки в записях и считаются по месяцам, т.е. покупка и месяц это одно и тоже Subscriptions course id 1 2 2018-01-01 00:00:00 1 10 2018-04-11 00:00:00 2 1 2018-01-02 00:00:00 2 11 2018-04-12 00:00:00 3 2 2018-01-03 00:00:00 3 12 2018-04-13 00:00:00 4 3 2018-01-04 00:00:00 4 13 2018-04-14 00:00:00 5 4 2018-01-05 00:00:00 5 14 2018-04-15 00:00:00 6 5 2018-01-06 00:00:00 Дата это оформленная подписка. Она же месяц. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2019, 13:50 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
Alpinist среднее количество покупок в месяц ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2019, 14:31 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
Alpinist Проблема в том что покупки в записях и считаются по месяцам, т.е. покупка и месяц это одно и тоже Т.Е у тебя данные уже агрегированы в разрезе "курсов" и "месяцев" только месяц записан извратно. Тогда тебе просто надо сгруппировать по курсу и месяцу + применить AVG к "количество покупок за месяц" + думать над тем. что написал Akina ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2019, 15:35 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
Ответ: SELECT name,count(MONTH(s.subscription_date))/(TIMESTAMPDIFF(MONTH,min(s.subscription_date),max(s.subscription_d) as avgMonth FROM courses c JOIN subscriptions s ON c.id = s.course_id GROUP BY c.name; ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 09:42 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
+ писать научись Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 10:38 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
982183, Спасибо, чемпион мира по писанию и каканию :D ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 11:14 |
|
Составить вложенный вопрос
|
|||
---|---|---|---|
#18+
Вам нужно посчитать сколько раз каждый курс был куплен в течение каждого месяца. (подзапрос) А потом взять среднее от этого количества для каждого курса. (Запрос, который будет использовать данные первого подзапроса) Зачем применять аггрегирование для даты подписки совершенно не понятно, месяц и год тащите из даты и по ним группируйте, считая id курса. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2019, 17:56 |
|
|
start [/forum/topic.php?fid=47&fpage=28&tid=1828857]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 165ms |
0 / 0 |