Как получить выбор данных за последние 7 дней?

0

Моя проблема: у меня есть таблица с ценой и датой. Мне нужно иметь среднюю цену за последние 7 дней. Например: у меня есть цены с сегодняшнего дня, вчера, 30 дней назад, 43 дня назад и т.д. Мне нужен средний не за последние 7 дней, а за последние 7 дней.

Мой код:

SELECT AVG(price) 
FROM table 
GROUP BY date  
ORDER BY date DESC LIMIT 7

Но у меня есть 7 средняя цена за каждый день. Может быть, у кого-то есть другая идея

  • 0
    Является ли тип даты date или datetime - datetime ? Если это datetime и datetime , вы можете попытаться бросить дату Дату с CAST.
  • 0
    Какую СУБД вы используете? «SQL» - это просто язык запросов, а не название конкретного продукта базы данных. Пожалуйста, добавьте тег для продукта базы данных, который вы используете postgresql , oracle , db2 , sql-server , ...
Показать ещё 3 комментария
Теги:

2 ответа

1
Лучший ответ

Используйте подзапрос, чтобы получить последние 7 существующих дней, получить самую раннюю из этих дат, а затем join этой таблице.

SELECT AVG(price)
FROM table AS t1
JOIN (SELECT MIN(dateday) AS mindate
      FROM 
        (SELECT DATE(date) AS dateday
         FROM table
         GROUP BY dateday
         ORDER BY dateday DESC LIMIT 7
        ) AS x
      ) AS t2
ON t1.date >= t2.mindate
  • 0
    Спасибо за Ваш ответ. Ваш ответ - лучший для моего случая. большое спасибо
1

использовать функцию avg и подзапрос

  select avg(price)
  from
    (SELECT date,price
     FROM table
     ORDER BY date desc limit 7
    ) as t
  • 0
    Мне не нужна средняя цена за последние 7 дней. Мне нужна средняя цена за последние 7 дней. Например, 2018-09-18, 2018-08-08, 2018-08-07, 2018-08-05, 2018-07-25, 2018-07-22, 2018-07-20, потому что цена была добавлена на эти дней.
  • 0
    @grzeso отредактировал мой ответ
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню