ورود

View Full Version : کوئری گیری برای خلوت کردن جدول



modern_amin
شنبه 24 آذر 1397, 13:29 عصر
149437
سلام دوستان عزیز
برای ساده سازی و توضیح بهتر مجبور شدم جدول فرضی بالا رو درست کنم
قرض از انجام اینکار خلوتر کردن جدول و حجم داده ه ای زیاد هست

حال با فرض جدول فرضی بالا
میخام بدونم چجور میشه در ساده ترین حالت کوئری نوشت تا موارد زیر رو انجام بده

1- تو کوئری اول میخام از هر کاربر فقط سه پیام آخرش باشه و بقیه پیام های اون کاربر پاک بشه
مثال تو جدول فوق برای کاربر 501 فقط سطر id های شماره 8 - 9 - 15 میمونه


2- تو کوئری دوم میخام مثلا برای کاربر 500 که چهار سطر اطلاعات داره یک سطر جدید با مجموع jam و kam ردیف های موجودش به جدول اضافه بشه و چهار سطر فعلیش پاک بشه

id=17 id_fard=500 jam=4000 kam=7500

modern_amin
چهارشنبه 28 آذر 1397, 22:58 عصر
کسی نبود راهنمایی کنه؟؟؟؟؟؟؟؟؟؟؟

karim.mashayekhi
چهارشنبه 05 دی 1397, 16:02 عصر
سلام
برای مورد اول باید از پارتیشن استفاده کنی و شرطش هم اینه که یه شمارنده بذاری و براش شرط بزاری

modern_amin
چهارشنبه 05 دی 1397, 23:55 عصر
سلام

ممنونم
مثال میتونید بزنید؟

modern_amin
یک شنبه 09 دی 1397, 23:43 عصر
اگر سمپلی بزنید ممنون میشم

modern_amin
سه شنبه 11 دی 1397, 18:56 عصر
سلام
برای مورد اول باید از پارتیشن استفاده کنی و شرطش هم اینه که یه شمارنده بذاری و براش شرط بزاری

رهنمایی کنید

hamid_hr
چهارشنبه 12 دی 1397, 17:01 عصر
این نمونه کد رو تست کنید
declare @t table(id int identity(1,1), idf int , jam int, kol int)insert into @t
values(500,100,500),(500,98,32) ,(500,27,52),(500,40,72),(500,62,22),
(600,33,500),(600,44,32) ,(600,55,52),(600,66,72),(600,77,22)


select t1.* from @t t1
inner join (select row_number()over(partition by idf order by id desc) r, id from @t) t2 on t1.id = t2.id
where t2.r < 4