5

選択基準を満たす行の列値の合計を、個々の行だけでなく、同じ基準を満たす複数のグループに対して返すことはできますか?

たとえば、次のことを考慮してください。

id  order_id    quantity
1   1           1
2   1           3
3   1           5
4   2           2
5   2           4

どの MySQL SELECT クエリが次の結果を返す可能性がありますか:

id  order_id    quantity    order_sum
1   1           1           9
2   1           3           9
3   1           5           9
4   2           2           6
5   2           4           6

編集:フォローアップの質問:結果が複数の条件を持つクエリから生成されると仮定すると、これらの条件は最終的なクエリでどのように処理されますか?

4

3 に答える 3

6

「from」句でサブクエリを使用できます。

select  t.*, tsum.sumquantity
from t join
     (select t.orderid, sum(quantity) as sumquantity
      from t
      group by t.order_id
     ) tsum
     on t.orderid = tsum.orderid

「from」句に入れる利点は、複数の変数を持つことができることです。たとえば、注文数、最大数量、正確に 1 つの数量が表示される回数などを追加できます。

于 2012-08-02T20:18:37.160 に答える
2

サブクエリを使用できます:

select  *
,       (
        select  sum(quantity)
        from    YourTable yt2
        where   yt2.order_id = yt1.order_id
        ) as order_sum
from    YourTable yt1
于 2012-08-02T19:40:09.270 に答える
1

for eachSUMを計算するサブクエリが必要ですquantityOrder_ID

SELECT  a.*, b.order_sum
FROM    myTable a INNER JOIN
            (
                SELECT order_ID, 
                       SUM(quantity) order_sum
                FROM    myTable
                GROUP BY order_ID
            ) b on a.order_ID = b.order_ID
于 2012-08-07T08:41:18.377 に答える