بهار آموزش با تخفیف های شگفت انگیز توسینسو بهار آموزش با تخفیف های شگفت انگیز توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

نمایش بیشترین مقدار با دستور 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

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

پرسیده شده در 1395/02/25 توسط

5 پاسخ

4

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

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

SELECT TOP 1 * FROM T
ORDER BY Record DESC

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

پاسخ در 1395/02/25 توسط
0

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

پاسخ در 1395/02/25 توسط
0

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

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 است.

باتشکر

پاسخ در 1395/02/25 توسط
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
پاسخ در 1395/02/25 توسط
0

متوجه شدم...

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

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 به بعد قابل استفاده است.

پاسخ در 1395/02/25 توسط

پاسخ شما