7

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

これは私の質問です、

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

上記のクエリは、行の 1 つの total_value のみを返します。

例-ここにいくつかのサンプルデータがあります、

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
...
...

前もって感謝します。

4

2 に答える 2

14

なぜ「where」節を使うのですか?

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)
于 2012-09-07T19:37:18.573 に答える
2
ID REQUEST_ID CLAIM_VALUE
3 10003 9.00
5 10003 5.07

使いたい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

GROUP BY集計関数を使用していない限り、使用しないでください。

于 2012-09-07T19:38:51.117 に答える