در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

محمد

نمایش بیشترین مقدار با دستور Select در خروجی SQL Sever

باسلام خدمت دوستان عزیز ، فرض کنید یک جدول به نام T داریم که دارای 3 فیلد به نامهای ID و Age و Record می باشد که در فیلد ID کد انحصاری هر شخص وجود دارد و در فیلد Age سن و در فیلد Record مدت زمان رکورد آن شخص وجود دارد. پس برای نمایش رکورد ها به صورت نزولی کد زیر را می نویسیم

SELECT ID ,Age ,Record FROM T Order By Record DESC

حالا اگر بخواهیم که فقط بیشترین رکورد از را در خروجی نشان دهد که مربوط که کدام ID می باشد. چطوری باید بنویسیم؟ مثلا در خروجی باشد:

ID***Age***Record
12.618***40***100

واگر بخواهیم بیشترین رکورد ها را بر اساس سن گروه بندی (زیر 30 سال و 31 تا 40 و بالای 41 سال) کنیم چطور مثلا بخواهیم ؟ مثلا در خروجی باشد ، رکورد سن زیر 30 سال** رکورد سن 31 تا 40** رکورد سن بالای 41

20.65               ***          12.618     ****           5.68

باتشکر و سپاس از شما دوستان عزیز

این سوال 1 پاسخ دارد.
#آموزش_select_از_دیتابیس #بدست_آوردن_بیشترین_مقدار_با_select #دستور_sql_در_select #آموزش_دستور_select_در_sql #بدست_آوردن_بیشترین_مقدار_در_sql #select_در_sql
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.

سلام به شما itpro ای عزیز.

شما می توانید برای حل سوال اول کد زیر را بنویسید

SELECT TOP 1 * FROM T
ORDER BY Record DESC

و برای حل سوال دوم باید سه قسمت بنویسید که هر قسمت را با where جدا نمایید.

سرنوشت ما با افکارمان تغییر می کند؛ اگر افکارمان همیشه مطابق با خواسته هایمان باشند، همان چیزی می شویم که آرزو داریم و همان کاری را می کنیم که می خواهیم
  • انتخاب شده به عنوان جواب توسط 1 نفر
محمد طارمی

سلام برای قسمت دوم سئوالتون باید در Select تون دستور Group By و Case رو لحاظ کنید.

مثلا

CASE WHEN Age<30 Then 'Something 1'
        WHEN Age >40 Then 'Something 2'
        WHEN Age >50 Then 'Something 3'
ELSE 'Something 4'
END
متخصص SQL Server در مباحث: Design & Implement T-SQL Administration Performance&Tuning
محمد

از دوستان عزیز کمال تشکر و سپاس را دارم

محمد

من بخش دوم کد را به صورت زیر نوشتم

SELECT TOP 1 ID ,Age ,Record,
CASE WHEN Age<30 Then 'Something 1'
        WHEN Age between '31' and '40' Then 'Something 2'
        WHEN Age >50 Then 'Something 3'
ELSE 'Something 4'
END
from T GROUP BY ID ,Sen ,Record ORDER BY Record DESC

ولی این کد در اصل میگه که کسی که بیشترین رکورد را دارد در کدام گروه سنی قرار دارد. ولی در اصل من می خواهم در خروجی سه رکورد را ببینم. یعنی ببینم که در بیشترین رکورد در گروه سنی زیر 30 سال چند و مربوط به کدام ID است و نیز بیشترین رکورد در گروه سنی 31 تا 40 چند و مربوط به کدام ID است و بیشترین رکورد در گروه سنی آخر چند و مربوط به کدام ID است.

باتشکر

محمد طارمی

متوجه شدم...

این دستور بیشترین رکورد در هر رده سنی رو مشخص می کنه .

SELECT ID ,Age ,Record,
  FROM (SELECT *,
               ROW_NUMBER() OVER(PARTITION BY Age
                                 ORDER BY Record DESC) AS RNK
          FROM table_name
       )TBL
 WHERE RNK= 1;

نکته:این تابع از نسخه 2005 به بعد قابل استفاده است.

متخصص SQL Server در مباحث: Design & Implement T-SQL Administration Performance&Tuning
پاسخ شما
برای ارسال پاسخ خود وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....