按周分组会产生不准确的结果

时间:2012-12-04 02:45:17

标签: mysql sql

我试图从桌子上获得我的所有销售额并按周分组,但我得到错误的一周范围。

表格结构

order_id,  sell_price, buy_price, time

每日销售额

Sell Price   Fees     Buy_Price    Margin   Date
181.98       36.39    78.43        67.154   03-12-2012
65.49        13.08    30.34        22.052   02-12-2012
44.21        8.84     19.45        15.918   29-11-2012
84.46        16.89    32.39        35.178   27-11-2012
106.52       21.30    61.66        23.556   26-11-2012
113.92       22.78    44.74        46.396   25-11-2012
64.74        12.94    26.32        25.472   24-11-2012
16.11        3.22     4.20         8.688    23-11-2012
13.81        2.76     3.62         7.428    22-11-2012

每周销售额

Sell Price   Fees     Buy_Price    Margin   Date
247.47       49.494   108.77       89.206   03-12-2012
349.11       69.822   158.24       121.048  26-11-2012
94.66        18.932   34.14        41.588   24-11-2012

你可能已经注意到最后一个表的问题是数字没有加起来,第一行应该计算3-11-2012 to present的结果(这意味着边距应该是67),而第二行应该是应该计算26-11-12 to 2-11-12的结果(这意味着保证金应该在95左右)。

我正在使用的查询在下面,可能是它的问题,因为我看不到它。

SQL

SELECT 
ROUND(SUM(sell_price),2) AS sell_price, 
ROUND(SUM(buy_price/100*20),2) AS fees, 
ROUND(SUM(buy_price),2) AS buy_price, 
ROUND(SUM(sell_price/100*80 - buy_price),2) AS margin, 
time 
FROM order_items 
GROUP BY WEEK(FROM_UNIXTIME(time)) 
ORDER BY WEEK(FROM_UNIXTIME(time)) DESC

1 个答案:

答案 0 :(得分:1)

太容易了。你的mysql实例中的一周从星期日开始。你想要它从星期一算起。您需要将第二个参数传递给WEEK函数。在你的情况下它将是1(我认为)。不过,我建议您调整default_week_format系统变量以匹配您所在国家/地区的区域设置。