0

SQLクエリを実行して、週次および月次の売上レポートを取得するにはどうすればよいですか。

表:注文

ID | Product_id | 注文価格| 数量| 購入日

1        1           34         2        9/10/12
2        1           34         2        8/10/12
3        4           34         2        07/10/12
4        3           34         2        22/09/12
5        1           34         2        9/10/12
6        1           34         2        22/09/12
7        4           34         2        9/08/12
8        3           34         2        22/09/12

表:製品

ID | Name | description

1    A       ksfjsdkf
2    B       ksfjsdkf
3    C       ksfjsdkf
1    A       ksfjsdkf

期待される結果 :以下は正確ではない結果の例です

product_name           Weekly Sum(QTY), weekly revenue,  Monthly SUM(QTY), monthly revenue

A                           120             3000           2345                  234343
4

3 に答える 3

2

ここで、数量と注文価格の簡単なクエリを確認します

SELECT p.Description, psw.qtysum, psw.opsum, psm.qtysum, psm.opsum
FROM Products p
LEFT JOIN
  ( SELECT sw.product_id, SUM( sw.QTY ) AS qtysum, SUM( sw.`order price` ) AS opsum 
    FROM orders sw 
    WHERE WEEK( sw.`purchase date`) = WEEK( current_date )
    AND YEAR( sw.`purchase date`) = YEAR( current_date )
    GROUP BY sw.product_id ) psw 
  ON p.id = psw.product_id

LEFT JOIN
  ( SELECT sm.product_id, SUM( sm.QTY ) AS qtysum, SUM( sm.`order price` ) AS opsum 
    FROM orders sm 
    WHERE MONTH( sm.`purchase date`) = MONTH( current_date )
    AND YEAR( sm.`purchase date`) = YEAR( current_date )
    GROUP BY sm.product_id ) psm 
  ON p.id = psm.product_id
于 2012-10-21T08:07:40.197 に答える
0

php datetime( "W")を使用して週番号を取得し、datetime( "m")を使用して月番号を取得し、データベース内のすべての日付を週番号と月番号に変換して並べ替えることができます。

于 2012-10-21T07:45:47.140 に答える
0
SELECT p.name, week.qty, week.price, month.qty, month.price
FROM products p LEFT JOIN
  (SELECT p.id AS prod_id, SUM(o.qty) AS qty, SUM(o.price) AS price
   FROM products p LEFT JOIN orders o ON p.id = o.prod_id
   WHERE o.date >= DATE_SUB(CURDATE(), INTERVAL 7 day)
   GROUP BY p.id) AS week ON p.id = week.prod_id LEFT JOIN
  (SELECT p.id AS prod_id, SUM(o.qty) AS qty, SUM(o.price) AS price
   FROM products p LEFT JOIN orders o ON p.id = o.prod_id
   WHERE o.date >= DATE_SUB(CURDATE(), INTERVAL 1 month)
   GROUP BY p.id) AS month ON p.id = month.prod_id

あまり最適化されていませんが、ここにはmysql cliがないため、テストする機能がないと機能しない可能性のある複雑なものは投稿しません。

于 2012-10-21T08:00:46.943 に答える