Oracle SQL: getting all row maximum number from specific multiple criteria -


मेरे पास निम्न तालिका नाम है foo:

  आईडी | डी 1 | डी 2 | डी 3 | --------------------- 1 | 47 | 3 | 71 | 2 | 47 | 98 | 82 | 3 | 0 | 99 | 3 | 4 | 3 | 100 | 6 | 5 | 48 | 10 | 3 | 6 | 49 | 12 | 4 |  

मैं एक चुनिंदा क्वेरी चलाऊंगा और परिणाम इस तरह दिखेंगे

  आईडी | डी 1 | डी 2 | डी 3 | परिणाम | ------------------------------ 1 | 47 | 3 | 71 | डी 3 | 2 | 47 | 98 | 82 | डी 2 | 3 | 0 | 99 | 3 | डी 2 | 4 | 3 | 100 | 6 | डी 2 | 5 | 48 | 10 | 3 | डी 1 | 6 | 49 | 12 | 4 | डी 1 |  

अतः, मूलतः मुझे डी 1, डी 2, डी 3 कॉलम के बीच अधिकतम मूल्य प्राप्त करना चाहते हैं I जैसा कि आप देख सकते हैं, डीडी 1: डी 2: डी 2: डी 3: डी 3

के बीच अधिकतम मान से आईडी 1 के पास D3 है, इसका अर्थ है 4: 3: 71, मैक्स वैल्यू 71 है। यही वजह है कि परिणाम 'डी 3'

"पोस्ट-पाठ" itemprop =

"पाठ">

निम्नलिखित पर विचार करें - एक सामान्यीकृत दृष्टिकोण ...

  ड्रॉप तालिका यदि मेरे_एबल मौजूद है; टेबल बनाओ my_table (आईडी INT नहीं NULL, डी INT नहीं शून्य, वैल INT नहीं शून्य, प्राथमिक कुंजी (आईडी, डी)); My_table VALUES (1,1, 47), (2,1, 47), (3,1,0), (4,1,3), (5,1,48), (6,1, 4 9) में सम्मिलित करें ), (1,2,3), (2,2, 9 8), (3, 2 99), (4,2, 100), (5,2, 10), (6,2, 12), (1 , 3, 71), (2,3,82), (3,3,3), (4,3,6), (5,3,3), (6,3,4); SELECT * my_table से; + ---- + --- + ----- + | आईडी | डी | वैल | + ---- + --- + ----- + | 1 | 1 | 47 | | 1 | 2 | 3 | | 1 | 3 | 71 | | 2 | 1 | 47 | | 2 | 2 | 98 | | 2 | 3 | 82 | | 3 | 1 | 0 | | 3 | 2 | 99 | | 3 | 3 | 3 | | 4 | 1 | 3 | | 4 | 2 | 100 | | 4 | 3 | 6 | | 5 | 1 | 48 | | 5 | 2 | 10 | | 5 | 3 | 3 | | 6 | 1 | 49 | | 6 | 2 | 12 | | 6 | 3 | 4 | + ---- + --- + ----- + SELECT x। * My_table x से (चयन आईडी, अधिकतम (वैल) max_val fROM my_table ग्रुप द्वारा आईडी) y पर y.id = x.id और y .max_val = x.val; + ---- + --- + ----- + | आईडी | डी | वैल | + ---- + --- + ----- + | 1 | 3 | 71 | | 2 | 2 | 98 | | 3 | 2 | 99 | | 4 | 2 | 100 | | 5 | 1 | 48 | | 6 | 1 | 49 | + ---- + --- + ----- +  

(यह एक MySQL समाधान के रूप में किया गया है - मैं ओरेकल वाक्यविन्यास से परिचित नहीं हूँ, इसलिए अगर यह नहीं 'टी पोर्ट)

क्या यह आपकी टिप्पणी का जवाब है?

  SELECT x। *, Y.max_val my_table x से जुड़ें (SELECT id, MAX (val) max_val fROM my_table ग्रुप द्वारा आईडी) y पर y.id = x.id; + ---- + --- + ----- + --------- + | आईडी | डी | वैल | अधिकतम_वल | + ---- + --- + ----- + --------- + | 1 | 1 | 47 | 71 | | 1 | 2 | 3 | 71 | | 1 | 3 | 71 | 71 | | 2 | 1 | 47 | 98 | | 2 | 2 | 98 | 98 | | 2 | 3 | 82 | 98 | | 3 | 1 | 0 | 99 | | 3 | 2 | 99 | 99 | | 3 | 3 | 3 | 99 | | 4 | 1 | 3 | 100 | | 4 | 2 | 100 | 100 | | 4 | 3 | 6 | 100 | | 5 | 1 | 48 | 48 | | 5 | 2 | 10 | 48 | | 5 | 3 | 3 | 48 | | 6 | 1 | 49 | 49 | | 6 | 2 | 12 | 49 | | 6 | 3 | 4 | 49 | + ---- + --- + ----- + --------- +  

Comments

Popular posts from this blog

Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel -

multithreading - PhantomJS-Node in a for Loop -

c++ - MATLAB .m file to .mex file using Matlab Compiler -