Как выбрать последние 7 дней в наличии - MySql - PullRequest
0 голосов
/ 25 марта 2019

У меня проблема с данными в MySQL. Как я могу выбрать все данные из семерки доступных данных?

Я пытался запустить

SELECT * FROM database where ship_day 
BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW();

но я не работаю для своих целей. Допустим, мы находимся 9 января, а мой MAX(ship_day) - 7 января, и я хочу получить данные из последних 7 доступных данных с 1 по 7 января.

Я пытался запустить

SELECT * FROM database where ship_day 
BETWEEN DATE_SUB(MAX(ship_day), INTERVAL 7 DAY) AND MAX(ship_day);

но я получил ошибку.

Я знаю, что могу увеличить INTERVAL 7 DAY до INTERVAL 9 DAY, но я хочу, чтобы этот процесс был автоматическим. Как я могу решить?

Ответы [ 3 ]

1 голос
/ 25 марта 2019

Хорошо, вот один метод:

SELECT d.* 
FROM database d 
WHERE d.ship_day >= COALESCE( (SELECT DISTINCT d2.ship_day 
                               FROM database d2 
                               ORDER BY d2.ship_day DESC
                               LIMIT 1 OFFSET 6
                              ), d.ship_day
                           );

Примечание: если у вас есть только одна строка на ship_day, просто используйте limit:

SELECT d.* 
FROM database d 
ORDER BY d.ship_day DESC
LIMIT 7
0 голосов
/ 25 марта 2019

Вы можете получить последнюю дату, за которую у вас есть данные:

select MAX(ship_day) FROM database

, поэтому используйте ее следующим образом:

SELECT * FROM database 
where ship_day >= DATE_SUB((select MAX(ship_day) FROM database), INTERVAL 7 DAY)
0 голосов
/ 25 марта 2019

Допустим, мы находимся 9 января, а мой MAX (ship_day) - 7 января и я хочу получить данные из последних 7 доступных данных, так с января С 1 по 7

Я предполагаю, что вы ищете запрос ниже, но трудно сказать наверняка без примеров данных и ожидаемых результатов.

SELECT 
 *
FROM 
 t
WHERE
 ship_day >= (
   SELECT 
     MAX(ship_day) - INTERVAL 7 DAY
   FROM
    t
 )

Или вы также можете написать это как

SELECT 
 *
FROM 
 t
WHERE
 ship_day >= (
   SELECT 
     MAX(ship_day)
   FROM
    t
 ) - INTERVAL 7 DAY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...