2012-09-07 18 views
6

मैं एक mysql चुनिंदा क्वेरी बनाने की कोशिश कर रहा हूं जिसमें से दो अन्य फ़ील्ड के आधार पर मान की गणना की जाती है।MySQL एकाधिक कॉलम से मूल्य का चयन और गणना

यह, मेरी क्वेरी है

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

मैं कहां हटाता हूं और एसयूएम जोड़ा जाता हूं। यह पूरी तरह से काम किया। सहायता के लिए धनयवाद! बहुत सराहना – verheesj

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 नहीं का उपयोग करना चाहिए जब तक आप एक समग्र समारोह का उपयोग कर रहे उपयोग करना चाहते हैं।

+0

आपके उत्तर के लिए धन्यवाद, मैंने इसे अभी ठीक कर दिया है :) – verheesj

संबंधित मुद्दे