1

これを行う簡単な方法があると思わずにはいられませんが、コミュニティが提供するシンプルさを見逃さないように、正しく行うようにしたいと思います。私は 2 つのテーブルを持っています:orderlineは、あなたが期待するように 1 対多の関係で、それぞれ注文の場所とそれらの注文のアイテムをモデル化します。リレーション内の各レコードには、lineへの外部キーがありorderます。

過去 6 か月間のすべての注文の平均重量を計算する簡単なレポートを作成したいと考えています。はテーブルweightに格納され、数量 ( ) を使用して計算する必要がある 1 つのアイテムlineの重量を表します。私の計画は、最初に行をまとめてから平均を計算することでしたが、うまく機能しているように見えますが、ここで平均を適用する方法がわかりません。同様に、これらすべての合計の合計を取得する方法がわからないので、手動で計算できます。qtysumsum

SQL の例

SELECT 
    SUM(a.weight * a.qty)
FROM
    line AS a
        LEFT JOIN
    order AS b ON a.order_id = b.id
WHERE
    b.datetime > DATE_SUB(NOW(), INTERVAL 6 MONTH) AND b.status = 'P'
GROUP BY a.order_id
ORDER BY b.datetime ASC;

結果の例

20.0000
66.7400
20.7300
7.5000
7.1100

平均、または少なくとも合計を計算するには、これらの結果をどのように使用すればよいですか?

4

1 に答える 1

2

既存のクエリからそこに到達する最も簡単な方法 (派生テーブルを使用):

SELECT AVG(weight) AS Average, SUM(weight) AS Total
FROM
(
    SELECT 
        SUM(a.weight * a.qty) AS weight
    FROM
        `line` AS a
    LEFT JOIN
        `order` AS b ON a.order_id = b.id
    WHERE
        b.datetime > DATE_SUB(NOW(), INTERVAL 6 MONTH) AND b.status = 'P'
    GROUP BY a.order_id
) a
于 2013-06-04T13:57:32.343 に答える