2012-09-07 55 views
6

Tôi đang cố gắng tạo truy vấn chọn mysql trong đó tính toán giá trị dựa trên hai trường khác.MySQL chọn và tính giá trị từ nhiều cột

Đây là câu hỏi của tôi,

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

Truy vấn chỉ trên mang lại total_value cho một trong những hàng.

Ví dụ - đây là một số dữ liệu mẫu,

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 

Như bạn có thể thấy có một số hàng REQUEST_ID '10001'. Những gì truy vấn cần làm là REQUEST_ID * QUANTITY sau đó nhóm chúng để nó chỉ trả về giá trị cuối cùng (thêm tất cả các kết quả từ số tiền nhân (REQUEST_ID * QUANTITY)

Đây là kết quả mong đợi của những gì tôi hy vọng sẽ nhận được (ví dụ khác nhau trên REQUEST_ID 10003,

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

Cảm ơn bạn trước.

+0

Xóa 'WHERE' tạo ra cùng một kết quả. – verheesj

+0

bạn có thể sử dụng sqlfiddle không? – jcho360

+0

@verheesj - Bạn nên đánh dấu câu trả lời là đã được chấp nhận nếu câu trả lời cho câu hỏi của bạn. – UltraOne

Trả lời

11

tại sao bạn sử dụng "ở đâu" khoản?

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

Tôi xóa WHERE và thêm SUM. Điều này làm việc hoàn hảo. Cảm ơn bạn vì sự giúp đỡ! Nhiều đánh giá cao – verheesj

2
ID  REQUEST_ID  CLAIM_VALUE 
3  10003   9.00 
5  10003   5.07

Bạn muốn sử dụng 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 

Bạn không nên sử dụng GROUP BY trừ khi bạn đang sử dụng một chức năng tổng hợp.

+0

Cảm ơn bạn đã trả lời, tôi đã sửa lỗi này ngay bây giờ :) – verheesj

Các vấn đề liên quan