3

過去 7 日間の日付と SUM(total) を取得しようとしています。私はこのコードを試して、日付NULLと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
4

4 に答える 4

2

あなたが試すことができますinterval - 7 day

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

なぜbetweenうまくいかなかったのかわからないので、これをチェックしてください:

SQLFIDDLE デモ

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 |
于 2013-01-29T10:14:22.417 に答える
0

MySQLBETWEEN ...およびマニュアルから

expr BETWEEN min AND max

だからそれをに変更します

    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

Working DEMO

ノート:

  • 日付はmysqlreserveキーワードなので、ラップします`
  • SUMの構文はでSUM(column_name)あり、列名はdaily_salesです。
于 2013-01-29T10:11:19.757 に答える
0

@diEchoの回答が示唆するように、最初の日付式を下位にする必要がある場合はNOW()、式の最初の項ではなく2番目の項を作成する必要があります。

于 2013-01-29T10:20:20.143 に答える
0

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`)
于 2013-01-29T10:20:20.720 に答える