1

私は数時間グーグルをしてきました...これは簡単だと思いましたが、明らかに私には向いていません:)

2 つのテーブルに売上データがあり、特定のアイテムの週次売上レポートを作成したいと考えています。この目的のために、ドルの値は気にせず、単位数だけを気にします。「週」とは、カレンダーの週 (開始日が何であれ、私は気にしません) または現在から 7 日間のチャンクをさかのぼります (つまり、週 1 は最後の 7 日間、週 2 は 8 ~ 15 日前などです) のいずれかです。 ) - どちらか簡単です。私は単純に、時間の経過に伴う販売動向を監視しようとしています。たとえば、1 月の第 1 週の場合に 1 つのレコードのみを表示しないように、何年にもわたってさかのぼるのが望ましいです。

データは ZenCart から取得されます。関連するテーブル/列構造は次のとおりです。

Table "orders" has columns: orders_id, date_purchased

Table "orders_products" has columns: orders_id, products_id, product_quantity

私が問題を抱えているのは、結合と構文です。

4

3 に答える 3

3

これは私のニーズに合っていました:

SELECT o.date_purchased, CONCAT(YEAR(o.date_purchased), LPAD(WEEK(o.date_purchased), 2, '0')) as weekyear, op.products_id, SUM( op.products_quantity )
FROM orders_products op
LEFT JOIN orders o ON op.orders_id = o.orders_id
WHERE op.products_id = 331
GROUP BY weekyear
ORDER BY weekyear
于 2013-02-24T19:29:18.747 に答える
0

date/datetime/timestamp列がある場合weekは、 where 句で関数を使用できます

select week(now()) as week, sum(units) as total
from sales
where week(sales_date) = week(now());

またはその前の週

select week(now()) - 1 as week, sum(units) as total
from sales
where week(sales_date) = week(now()) - 1;

52/53 週から 0/1 週までの年の折り返しに注意する必要があります。

テスト用のSQLFiddle

于 2013-02-24T17:16:40.953 に答える