Помогите составить запрос SQL

12
D
На сайте с 28.06.2008
Offline
1101
668

Есть таблица вида 

Не могу придумать как  написать SQL запрос, который на каждую дату будет выводить среднее значение bb/prize за последние 7 дней?


Sly32
На сайте с 29.03.2012
Offline
303
#1

https://clc.to/mC56SA

Как раз для тебя курс

Aisamiery
На сайте с 12.04.2015
Offline
293
#2

Нужно что то типа такого

select date(create_date) as d, avg(round(bb / prize)) as av from table_name where d > date_sub(date(now()), interval 7 day)

Ну или что то похожее, под рукой нет чет БД

PS если это имелось ввиду не делить то что то типо такого

select date(create_date) as d, avg(bb) as av_bb, avg(prize) as av_bb from table_name where d > date_sub(date(now()), interval 7 day)
Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
Aisamiery
На сайте с 12.04.2015
Offline
293
#3
Aisamiery #:
select date(create_date) as d, avg(round(bb / prize)) as av from table_name where d > date_sub(date(now()), interval 7 day)

Самое важное забыл группировку =))

select date(create_date) as d, avg(round(bb / prize)) as av from table_name where d > date_sub(date(now()), interval 7 day) group by d;

select date(create_date) as d, avg(bb) as av_bb, avg(prize) as av_prize from table_name where d > date_sub(date(now()), interval 7 day) group by d;
W1
На сайте с 22.01.2021
Offline
289
#4
Чёта мне кажется, что не будет это работать.
Мой форум - https://webinfo.guru –Там я всегда на связи
Aisamiery
На сайте с 12.04.2015
Offline
293
#5
webinfo #:
Чёта мне кажется, что не будет это работать.

почему?

W1
На сайте с 22.01.2021
Offline
289
#6
Aisamiery #:

почему?

У Вас выборка идёт от текущей даты, а ТС хочет иметь результат на все даты. Просто Вас ввела в заблуждение фраза "за последние 7 дней" - её следует читать как "за семь дней, включая саму дату и предшествующие 6 дней".  Если я правильно понял стартпост, исходя из фразы "на каждую дату".

Aisamiery
На сайте с 12.04.2015
Offline
293
#7
webinfo #:

У Вас выборка идёт от текущей даты, а ТС хочет иметь результат на все даты.

Ну может я не очень читатель в ТЗ, но у ТС запрос "на каждую дату будет выводить среднее значение bb/prize за последние 7 дней". Но сделал как понял конечно =)))

Aisamiery
На сайте с 12.04.2015
Offline
293
#8
webinfo #:
за семь дней, включая саму дату и предшествующие 6 дней

Так тут все правильно

то есть запрос 

where d > date_sub(date(now()), interval 7 day)

даст в выборку даты от 6 до 12 включая 6 и текущий день, то есть 7 дней

W1
На сайте с 22.01.2021
Offline
289
#9
Aisamiery #:
тут все правильно

Да кто ж спорит, что правильно? Речь о date(now()), если надо получить результат, скажем, на 1 декабря.

Aisamiery
На сайте с 12.04.2015
Offline
293
#10
webinfo #:

Да кто ж спорит, что правильно? Речь о date(now()), если надо получить результат, скажем, на 1 декабря.

А не кажется что задача "за последние 7 дней" немного отличается от задачи "за определенные даты/дату"? =)) 1 декабря это уже определенная дата

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий