2012-09-07 14 views
6

他の2つのフィールドに基づいて値を計算するmysql selectクエリを作成しようとしています。MySQL複数の列から値を選択して計算する

これは上記のクエリは、行のいずれかのTOTAL_VALUEに戻します

SELECT request_id, (
unit_cost * quantity 
) AS claim_value 
FROM `xx_non_part_usage` 
WHERE request_id = request_id 
GROUP BY request_id 

、私のクエリです。例えば

- あなたが見ることができるように、ここでいくつかのサンプルデータであり、

ID  REQUEST_ID  QUANTITY  UNIT_VALUE 
1  10001   2.0    3.00 
2  10001   1.0    19.00 
3  10003   0.5    18.00 
4  10001   10.0   12.00 
5  10003   0.75   6.76 
6  10002   9.0    3.20 
7  10001   0.10   13.80 
8  10001   1.0    90.99 
9  10004   6.75   3.00 
10  10009   3.23   87.00 

REQUEST_ID「10001」のいくつかの行があります。クエリで実行する必要があるのはREQUEST_ID * QUANTITYであり、最後の値段だけを返すようにグループ化します(掛け算(REQUEST_ID * QUANTITY)のすべての結果を追加します)。

REQUEST_ID 10003上(別の例を得ることを望ん、

REQUEST_ID  TOTAL_VALUE 
10003   14.07 
10004   20.75 
... 
... 

は、事前にありがとうございます。あなたは "" 句を使用なぜ

+0

'WHERE'を削除すると同じ結果が得られます。 – verheesj

+0

sqlfiddleを使用できますか? – jcho360

+0

@verheesj - あなたの質問に答えた場合は、回答を受け入れたものとしてマークする必要があります。 – UltraOne

答えて

11

mysql> select * from test; 
+------------+------------+----------+ 
| request_id | unit_value | quantity | 
+------------+------------+----------+ 
|   1 |   3 |  2 | 
|   1 |   19 |  1 | 
|   2 |  6.76 |  0.75 | 
|   2 |   18 |  0.5 | 
+------------+------------+----------+ 
4 rows in set (0.00 sec) 

mysql> SELECT request_id, sum(unit_value * quantity) as x from test group by request_id; 
+------------+--------------------+ 
| request_id | x     | 
+------------+--------------------+ 
|   1 |     25 | 
|   2 | 14.070000171661377 | 
+------------+--------------------+ 
2 rows in set (0.00 sec) 
+0

WHEREを削除してSUMを追加しました。これは完全に機能しました。お手伝いありがとう!大いに感謝します – verheesj

2
ID  REQUEST_ID  CLAIM_VALUE 
3  10003   9.00 
5  10003   5.07

あなたは、集計関数を使用していない限り、あなたはGROUP BYを使用すべきではないSUM

SELECT 
    request_id, 
    SUM(unit_cost * quantity) AS claim_value 
FROM `xx_non_part_usage` 
WHERE request_id = request_id 
GROUP BY request_id 

を使用します。

+0

あなたの答えをありがとう、私は今これを修正しました:) – verheesj

関連する問題