[英]Selecting Dates to sql and Sum
美好的一天。 我正在選擇“日期到MYSql”,然后一一選擇。 我要選擇所有一個星期。 我過去經常單獨選擇它。
這是我的代碼:
<?php $chart6 = $controller->runQuery("SELECT SUM(amount) FROM tbl_paid WHERE pay_date >= :today - INTERVAL 6 DAY"); $chart6->execute(array(":today"=>$today)); $chartData6 = $chart6->fetchColumn(); $chart5 = $controller->runQuery("SELECT SUM(amount) FROM tbl_paid WHERE pay_date >= :today - INTERVAL 5 DAY"); $chart5->execute(array(":today"=>$today)); $chartData5 = $chart5->fetchColumn(); $chart4 = $controller->runQuery("SELECT SUM(amount) FROM tbl_paid WHERE pay_date >= :today - INTERVAL 4 DAY"); $chart4->execute(array(":today"=>$today)); $chartData4 = $chart4->fetchColumn(); $chart3 = $controller->runQuery("SELECT SUM(amount) FROM tbl_paid WHERE pay_date >= :today - INTERVAL 3 DAY"); $chart3->execute(array(":today"=>$today)); $chartData3 = $chart3->fetchColumn(); $chart2 = $controller->runQuery("SELECT SUM(amount) FROM tbl_paid WHERE pay_date >= :today - INTERVAL 2 DAY"); $chart2->execute(array(":today"=>$today)); $chartData2 = $chart2->fetchColumn(); $chart1 = $controller->runQuery("SELECT SUM(amount) FROM tbl_paid WHERE pay_date >= :today - INTERVAL 1 DAY"); $chart1->execute(array(":today"=>$today)); $chartData1 = $chart1->fetchColumn(); $chart0 = $controller->runQuery("SELECT SUM(amount) FROM tbl_paid WHERE pay_date >= :today"); $chart0->execute(array(":today"=>$today)); $chartData0 = $chart0->fetchColumn(); ?>
是否有查詢可以選擇一周中全天的總和? 還是我應該保留此代碼?
試試SQL使用group
SELECT Day(pay_date) pay_day,SUM(amount) amount
FROM tbl_paid WHERE pay_date >= NOW() - INTERVAL 6 DAY
GROUP BY Day(pay_date)
結果:
| pay_day | amount |
|---------|--------|
| 1 | 246 |
| 2 | 200 |
| 28 | 1702 |
| 29 | 1462 |
| 30 | 864 |
| 31 | 1092 |
測試數據 :
| amount | pay_date |
|--------|----------------------|
| 100 | 2018-06-02T00:00:00Z |
| 123 | 2018-06-01T00:00:00Z |
| 546 | 2018-05-31T00:00:00Z |
| 432 | 2018-05-30T00:00:00Z |
| 731 | 2018-05-29T00:00:00Z |
| 851 | 2018-05-28T00:00:00Z |
| 100 | 2018-06-02T00:00:00Z |
| 123 | 2018-06-01T00:00:00Z |
| 546 | 2018-05-31T00:00:00Z |
| 432 | 2018-05-30T00:00:00Z |
| 731 | 2018-05-29T00:00:00Z |
| 851 | 2018-05-28T00:00:00Z |
| 436 | 2018-05-27T00:00:00Z |
如果您想了解更多信息,那么
您可以使用weekday()
和DAYNAME()
SELECT WEEKDAY(pay_date) WEEKDAY,DAYNAME(pay_date) DAYNAME,SUM(amount) amount
FROM tbl_paid WHERE pay_date >= NOW() - INTERVAL 7 DAY
GROUP BY WEEKDAY(pay_date),DAYNAME(pay_date)
結果:
| WEEKDAY | DAYNAME | amount |
|---------|-----------|--------|
| 0 | Monday | 1702 |
| 1 | Tuesday | 1462 |
| 2 | Wednesday | 864 |
| 3 | Thursday | 1092 |
| 4 | Friday | 246 |
| 5 | Saturday | 200 |
| 6 | Sunday | 1287 |
如果必須通過日期,請執行以下操作:
SELECT DATE(pay_date) `DATE`, SUM(amount) daily_amount
FROM tbl_paid
WHERE DATE(pay_date) BETWEEN DATE(:today) - INTERVAL 1 WEEK AND DATE(:today)
GROUP BY DATE(pay_date);
否則使用數據庫的當前日期。
SELECT DATE(pay_date) `DATE`, SUM(amount) daily_amount
FROM tbl_paid
WHERE DATE(pay_date)>=CURRENT_DATE - INTERVAL 1 WEEK
GROUP BY DATE(pay_date);
您不需要運行查詢七次。 記得; 不要重復自己(干燥)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.