GROUP BY周返回不正确的结果

时间:2013-12-07 12:31:56

标签: mysql sql group-by

我创建了一个查询,用于计算在给定的一周内扣除产品成本(我不知道业务术语)后的金额。

我打算得到268.38英镑,但我在12月2日至8日的一周内得到203.64英镑。

以下是我的查询,非常感谢任何帮助。

SELECT 
            ROUND(SUM(sell_price), 2) AS sell_price, 
            ROUND(SUM((sell_price - 2.8)/100 * 17.25 + 0.49), 2) AS fees, 
            ROUND(SUM(buy_price), 2) AS buy_price, 
            ROUND(SUM(sell_price - ((sell_price - 2.8)/100*17.25+0.49) - buy_price), 2) AS margin, 
            time 
            FROM order_items 
            GROUP BY WEEK(FROM_UNIXTIME(time), 1) 
            ORDER BY time DESC

更新

这真的很奇怪,但是当我在phpmyadmin中运行查询时,我在sqlfiddle中获得了不同的结果

http://www.sqlfiddle.com/#!2/d2d4a/1

2 个答案:

答案 0 :(得分:2)

我认为你的选择是错误的。如果你想获得每个弱点,那么你需要将时间改为WEEK(FROM_UNIXTIME(时间),1)。

答案 1 :(得分:1)

根据经验:

当您选择普通列(如时间)和聚合函数(如sum,min,max,count)时,GROUP BY子句始终是普通列的列表。 (MySQL允许您出于性能原因而采用普通列的子集)。

因此,在您的示例中,如果您想要每周金额,则应选择彼得建议的周,然后选择汇总计算。然后,group by与select-line中的周相同。