Iai*_*son 5 php mysql sql group-by running-total
我使用以下内容尝试以如下格式输出我的月度总计:
January
Quoted Total : £678
Parts Total : £432
Profit Total : £244
February
Quoted Total : £650
Parts Total : £345
Profit Total : £123
Run Code Online (Sandbox Code Playgroud)
等等..........
// Work Complete Totals
$query = $db->query("SELECT SUM(pricequoted) AS pricequotedtotal,
SUM(partprice) AS partpricetotal,
SUM(profit) profittotal,
DATE_FORMAT('%Y-%m', completeddate) AS month
FROM `jobdetails`
WHERE jobstatus='complete'
GROUP BY DATE_FORMAT('%Y-%m', completeddate)");
echo '<div style="float:right; padding-right:10px;">';
echo '<strong>Work Complete Totals</strong>';
while($result = $query->fetch_object()) {
$pricequoted = number_format($result->pricequotedtotal, 2, '.', '');
$partprice = number_format($result->partpricetotal, 2, '.', '');
$profit = number_format($result->profittotal, 2, '.', '');
echo '<p><strong style="color:red;">Quoted Total : £'.$pricequoted.'</strong></p>';
echo '<p><strong style="color:Darkorange ;">Parts Total : £'.$partprice.'</strong></p>';
echo '<p><strong style="color:green;">Profit Total : £'.$profit.'</strong></p>';
}
echo '</div>';
Run Code Online (Sandbox Code Playgroud)
我得到的问题是它只输出运行总计,所以我在页面底部的ONCE得到以下内容,但仅此而已:
Work Complete Totals
Quoted Total : £1460.00
Parts Total : £541.43
Profit Total : £918.57
Run Code Online (Sandbox Code Playgroud)
如果我在phpmyadmin中运行上面的查询,我得到结果:
pricequotedtotal partpricetotal profittotal month
1460 541.43 918.5699999999998 NULL
Run Code Online (Sandbox Code Playgroud)
我的表格布局如下:
id customerID name facebookuserurl tel email address itemforrepair repairdetails otherdetails pricequoted partprice profit datepartordered jobstatus dateofcompletion datecreated itemnumber
Run Code Online (Sandbox Code Playgroud)
以下是一个示例行:
49 37ac4 Ellen Frost https://www.facebook.com/ellen.mccormick.18 Galaxy S3 (Fullsize) Blue Broken front glass and also digitiser not working. Quoted customer on whole lcd, digitiser assembly r... 140 114.98 25.02 2013-05-02 complete 2013-05-08 2013-05-01 251258104217
Run Code Online (Sandbox Code Playgroud)
编辑>>下面是表格中几行的屏幕截图.

编辑>>
这是我的表结构:

你需要改变它
DATE_FORMAT('%Y-%m', completeddate)
Run Code Online (Sandbox Code Playgroud)
至
DATE_FORMAT(completeddate, '%Y-%m')
Run Code Online (Sandbox Code Playgroud)
这就是为什么你进入NULL你的month专栏,因此只有一行.
参见手册输入.
小智 5
伊恩
我想以下查询将对您有所帮助.
SELECT SUM(pricequoted)AS pricequotedtotal,SUM(partprice)AS partpricetotal,SUM(profit)profittotal,MONTHNAME(dateofcompletion)FROM jobdetailsWHERE jobstatus ='complete'GROUP BY DATE_FORMAT(dateofcompletion,'%Y-%m')order by dateofcompletion;
+------------------+----------------+-------------+-----------------------------+
| pricequotedtotal | partpricetotal | profittotal | MONTHNAME(dateofcompletion) |
+------------------+----------------+-------------+-----------------------------+
| 140 | 114.98 | 25.02 | May |
| 140 | 114.98 | 25.02 | June |
+------------------+----------------+-------------+-----------------------------+
2 rows in set (0.00 sec)