mysql - SQL - sum (column 1 + column2 + column3 ) and select max value of sum in each group -


नमूना डेटा के साथ मेरी मेज है:

  आईडी | group_id | स्तम्भ 1 | कॉलम 2 | स्तम्भ 3 | -------------------------------------- 1 1 | 1 1 0 2 1 | 1 1 1 3 2 | 0 0 4 4 2 | 1 1 1 5 1 | 1 0 6 6 3 | 0 0 0  

अपेक्षित परिणाम सेट: (परिणामस्वरूप प्रत्येक समूह में अधिकतम राशि (कॉल 1 + कोला 2 + 3 का) दिखाई देनी चाहिए)

> <पूर्व> आईडी | समूह_आईड | कॉलम 1 | कॉलम 2 | स्तंभ 3 | -------------------------------------- 2 1 | 1 1 1 4 2 | 1 1 1 6 3 | 0 0 0

वास्तविक परिणाम सेट: (द्वारा My_table मीटर समूह से कुल के रूप में * का चयन करें, अधिकतम (m.column1 + m.column2 + m.column3) M.group_id) जो गलत है

  id | group_id | column1 | column2 | column3 | total | ------------------------------------------ 1 1 | 1 1 3 3 2 | 0 0 3 3 6 3 | 0 0 0 0  

मैं एसक्यूएल के लिए काफी नया हूँ, ऐसा लगता है कि क्वेरी प्रत्येक समूह में पहले आईडी का चयन कर रहा है।

अपेक्षित परिणाम प्राप्त करने का सबसे अच्छा तरीका क्या है?

आप प्राप्त कर सकते हैं एक subselect के साथ अपने वांछित परिणाम यानी:

पहले चरण:

 <कोड> का चयन करें मैक्स (m1.column1 + m1.column2 + m1.column3) से My_table एम 1 ग्रुप द्वारा m1.group_id  

group_id प्रति अधिकतम कुल मिल जाएगा।

क्योंकि गैर एकत्रित स्तंभ में मान indetermined कर रहे हैं, अगर यह कॉलम अलग मान हैं एक समूह के लिए, तो आप बस कुल के रूप में आपके द्वारा किए गए नहीं कर सकते हैं, लेकिन पहले कदम से क्वेरी का उपयोग कर एक subselect यह करना होगा:

पूर्ण क्वेरी

< का चयन करें *, m.column1 + m.column2 + m.column3 कुल My_table मीटर से कहां m.column1 + m.column2 + m.column3 = (मैक्स (चयन के रूप में> <कोड pre> m1.column1 + m1.column2 + एम 1 .column3) से my_table एम 1 WHERE m.group_id = m1.group_id GROUP द्वारा m1.group_id);


Comments

Popular posts from this blog

java - org.apache.http.ProtocolException: Target host is not specified -

java - Gradle dependencies: compile project by relative path -

ruby on rails - Object doesn't support #inspect when used with .include -