প্রথম 2 র‌্যাঙ্কিংয়ের সারিগুলিতে ফলাফল সীমাবদ্ধ করুন


22

এসকিউএল সার্ভার ২০০৮-এ, আমি RANK() OVER (PARTITION BY Col2 ORDER BY Col3 DESC)ডেটা সেট করে ফিরতে ব্যবহার করছি RANK। তবে প্রতিটি বিভাজনের জন্য আমার কাছে কয়েকশ রেকর্ড রয়েছে, তাই আমি 1, 2, 3 ...... 999 র্যাঙ্ক থেকে মান পাব। তবে আমি RANKsপ্রতিটিতে মাত্র 2 জন চাই PARTITION

উদাহরণ:

ID   Name    Score    Subject
1    Joe      100      Math
2    Jim      99       Math
3    Tim      98       Math
4    Joe      99       History
5    Jim      100      History
6    Tim      89       History
7    Joe      80       Geography
8    Tim      100      Geography
9    Jim      99       Geography

আমি ফলাফলটি চাই:

SELECT Subject, Name, RANK() OVER (PARTITION BY Subject ORDER BY Score DESC)
FROM Table
Subject        Name      Rank
Math           Joe        1
Math           Jim        2
History        Jim        1
History        Joe        2
Geography      Tim        1
Geography      Jim        2

আমি প্রতিটি বিভাগে 1 এবং 2 নম্বর চাই want আমি এটা কিভাবে করবো?

উত্তর:


15

আপনি rank()একটি subquery ব্যবহার করে মূল কোয়েরি রাখতে এবং ফলাফল ফিল্টার করে এমন একটি কোয়েরি দিয়ে এটি মোড়ানো করতে পারে।


ইন্দ্রিয় তোলে। আমি আশা করি মাইক্রোসফ্ট এটিকে আরও সহজ করে তুলবে অর্থাৎ RANK ফাংশনে একটি নম্বর রাখবে। RANK(2) OVER (PARTITION BY Col2 ORDER B Y Col3) AS Top_2_Ranks। ভবিষ্যতে প্রকাশে এটি ঘটতে পারে। যদিও ধারণা জন্য ধন্যবাদ।
UB01

@ UB01: বা আরও ভাল, একটি ধারাটিতে উইন্ডোড ফাংশনগুলি ব্যবহার করা ভাল হবে WHERE
সমস্ত ট্রেডের জোন


0

আমি মনে করি এসকিউএল সার্ভারে এটি করার উপায় হ'ল উইন্ডো ফাংশনটি একটি সাধারণ টেবিল এক্সপ্রেশন সহ একত্রিত করা:

with cte as (
SELECT Subject, Name, RANK() OVER (PARTITION BY Subject ORDER BY Score DESC) as ordinal
FROM Table
)
select * from cte where ordinal <= 2

-1

তেরাদারার জন্য বিকল্পভাবে আপনি এটি করতে পারেন:

SELECT 
Subject, 
Name, 
RANK() OVER (PARTITION BY Subject ORDER BY Score DESC) as RN
FROM Table
QUALIFY a.RN <= 2

3
ঠিক আছে, ঠিক আছে, তবে প্রশ্নটি বিশেষত এসকিউএল সার্ভার সম্পর্কিত।
dezso
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.