Получение полной ежедневной продажи за 7 дней

I am trying to get the date and SUM(total) for last 7 days. I am trying this code and getting date NULL and daily_sale 0.00

SELECT
  date,
  IFNULL( SUM( total ), 0 ) AS daily_sale
FROM sales
WHERE date BETWEEN NOW()
    AND DATE_SUB(NOW(), INTERVAL 7 DAY)

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

date       daily_sale    
2013-01-29 500.00
2013-01-28 500.00
2013-01-27 500.00
2013-01-26 500.00
...
2013-01-23 500.00
3
nl ja de
и где данные выборки и желаемый выход?
добавлено автор Muhammad Raheel, источник
+1, вопрос был немного сложным
добавлено автор diEcho, источник
Попробуйте использовать GROUP BY
добавлено автор Mr47, источник

4 ответы

Вы можете попробовать с интервалом - 7 дней :

SELECT  date, SUM(Coalese(total,0)) AS daily_sale
FROM yourtable
WHERE date BETWEEN NOW()  AND DATE_ADD(NOW(), INTERVAL -7 DAY)

Не знаете, почему между не работал, проверьте это:

SQLFIDDLE DEMO

select dates, sum(coalesce(daily_sale,0)) as total
from sales
where dates <= NOW()
and dates >= Date_add(Now(),interval - 7 day)
group by dates
;

|                          DATES | TOTAL |
------------------------------------------
| January, 23 2013 00:00:00+0000 |   500 |
| January, 24 2013 00:00:00+0000 |   500 |
| January, 27 2013 00:00:00+0000 |  1500 |
| January, 28 2013 00:00:00+0000 |  1000 |
| January, 29 2013 00:00:00+0000 |   500 |
2
добавлено
@Saleen, пожалуйста, попробуйте с coalesce и interval - 7 дней за последние 7 дней из now()
добавлено автор bonCodigo, источник
@Saleem здесь, я обновил демоверсию SQlfiddle, посмотри и прокомментируй. Я использовал даты , указанный в date с учетом зарезервированного ключевого слова.
добавлено автор bonCodigo, источник
Рад, вы все поняли. =) Я даже экспериментировал, чтобы узнать, выпущены ли какие-либо форматы дат .. но действительно странно, все еще удивляюсь, почему между не работал: $
добавлено автор bonCodigo, источник
Brilliant :) хорошее использование встроенных функций.
добавлено автор bonCodigo, источник
уставший, но тот же :( дата не имеет значения.
добавлено автор Saleem, источник
Теперь он сформулировал: D Спасибо
добавлено автор Saleem, источник
в течение нескольких месяцев я использовал эту дату> = date_sub (now (), INTERVAL 12 MONTH), и она сработала. Спасибо за помощь: D
добавлено автор Saleem, источник

from MySQL BETWEEN...AND manual

expr BETWEEN min AND max

SO измените его на

    SELECT CURDATE( ),DATE_SUB( CURDATE() , INTERVAL 7 DAY ) AS weekEndDate, 
           `date` , SUM( COALESCE(`daily_sale`,0 ) ) AS weekly_sale
    FROM tbl_sale
    GROUP BY weekEndDate
    LIMIT 0 , 30

Рабочий DEMO

Заметка:

  • date is MySQL reserve Keyword so wrap it in `
  • syntax of SUM is SUM(column_name) and your column name is daily_sales
0
добавлено
В ту же дату NULL и daily_sale 0,00
добавлено автор Saleem, источник
Пробовал с SELECT date , IFNULL (SUM (всего), 0) как daily_sale FROM sales WHERE date МЕЖДУ СЕЙЧАС() И DATE_ADD (СЕЙЧАС (), ИНТЕРВАЛ 7 ДНЕЙ), но с той же датой null и sale 0.00
добавлено автор Saleem, источник

Вы должны использовать самую низкую дату сначала в команде BETWEEN, поэтому NOW() должно быть в конце

SELECT
  date,
  IFNULL( SUM( total ), 0 ) AS daily_sale
FROM sales
WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) and NOW()

или если вам нужна статистика за каждый день:

SELECT
  DATE(`date`),
  IFNULL( SUM( total ), 0 ) AS daily_sale
FROM sales
WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) and NOW()
group by DATE(`date`)
0
добавлено

Если первое выражение даты должно быть нижним, как предлагает @ diEcho ответ, тогда вам нужно сделать NOW() второй термин в выражении, а не первый.

0
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)