1

テーブルからすべての売上を取得し、週ごとにグループ化しようとしていますが、間違った週の範囲を取得しています。

テーブル構造

order_id,  sell_price, buy_price, time

1日あたりの売上

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 である必要があります)、2 番目の行は から結果を計算する必要があります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
4

1 に答える 1

1

簡単すぎる。mysql のインスタンスの週は日曜日から始まります。月曜日から計算します。2 番目のパラメーターをWEEK関数に渡す必要があります。あなたの場合、それは1になります(私は思う)。ただし、国の地域設定に合わせてdefault_week_formatシステム変数を調整することをお勧めします。

于 2012-12-04T03:18:29.370 に答える