2012-12-04 19 views
1

我试图从表中获得所有的销售额并按每周将其分组,但我得到错误的周范围。每周按周分组给出不准确的结果

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 

问题

表结构

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 

销售你可能已经注意到最后一个表是这些数字不相加,第一行应该是来自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

太容易了。你的mysql实例的一周从星期天开始。你想从星期一开始计算。你需要第二个参数传递给WEEK功能。在你的情况下,它会是1(我认为)。不过,我建议你调整default_week_format系统变量,以符合您国家的区域设置。

+0

我不知道你可以将其他参数传递给WEEK函数,谢谢 –

+0

请阅读WEEK函数的不同模式。它们非常重要(并且令人困惑) – cha