मुझे अधिकतम पंक्ति को पकड़ने के लिए कम से कम दो बार एक ही तालिका को खोजे बिना ऐसा करने में कठिनाई हो रही है, और उसके बाद उस पंक्ति के मान को पकड़ें। प्रश्न में तालिका काफी बड़ी है इसलिए यह अस्वीकार्य है।प्रति समूह एक कॉलम के अधिकतम मूल्य के साथ वापसी पंक्ति
SCORES
ID ROUND SCORE
1 1 3
1 2 6
1 3 2
2 1 10
2 2 12
3 1 6
मैं स्कोर कि प्रत्येक आईडी सबसे हाल ही में दौर में मिला वापस जाने के लिए की जरूरत है:
यहाँ क्या मेरी मेज की तरह लग रहे हो सकता है। यही है, अधिकतम (गोल) के साथ पंक्ति, लेकिन अधिकतम स्कोर नहीं।
OUTPUT:
ID ROUND SCORE
1 3 2
2 2 12
3 1 6
अभी मेरे पास है:
SELECT * FROM
(SELECT id, round,
CASE WHEN (MAX(round) OVER (PARTITION BY id)) = round THEN score ELSE NULL END score
FROM
SCORES
where id in (1,2,3)
) scorevals
WHERE
scorevals.round is not null;
यह काम करता है, लेकिन बहुत अक्षम (मैं मैन्युअल रूप से इन पंक्तियों के सभी बाहर फिल्टर करने के लिए जब मैं सिर्फ में उन पंक्तियों को आकर्षित नहीं करने के लिए सक्षम होना चाहिए है पहली जगह।)
सही मूल्य प्राप्त करने के लिए मैं क्या कर सकता हूं?
मुझे यह पसंद है; बहुत साफ। – Jeremy