簡體   English   中英

選擇日期以sql和求和

[英]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 |

SQL小提琴演示鏈接


如果您想了解更多信息,那么

您可以使用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 |

SQL小提琴演示鏈接

如果必須通過日期,請執行以下操作:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM