نمایش نتایج 1 تا 8 از 8

نام تاپیک: استخراج اطلاعات به صورت گروه بندی شده

  1. #1
    کاربر دائمی آواتار toopak
    تاریخ عضویت
    دی 1386
    محل زندگی
    192.168.1.1
    پست
    215

    استخراج اطلاعات به صورت گروه بندی شده

    با سلام
    من یک جدول دارم که توش اطلاعات ثبت میشه و هر کدوم هم timestamp دارن
    کاری که میخوام بکنم اینه که اطلاعات رو به صورت بازه ای استخراج کنم
    منظورم از اطلاعات فقط تعداد رکوردها تو یک بازه زمانی هستش
    هدف اصلیم گرفتن گزارشه
    برای مثال میخوام ببینم تو یک ماه اخیر هر روز چند رکورد ثبت شده
    یا مثلا 24 ساعته گذشته، هر ساعت چند رکورد ثبت شده
    یا مثلا اگر تو بازه یک سال اخیر هر ماه، یا هفته ، یا روز چه تعداد داده ثبت شده
    فرایند اینکه چطوری بیام و اطلاعات رو بگیرم رو نمیدونم
    در نهایت میخوام مثلا یه چارت باهاش رسم کنم
    نمونه مورد نظر:
    ماه | رکورد
    01 20
    02 15
    03 43
    04 12

    نمونه 2:
    ساعت | رکورد
    00 2
    01 1
    02 0
    03 0
    04 0
    05 0
    06 2
    07 5
    08 10
    ....
    ممنون میشم اگر دوستان کمک کنن

  2. #2
    کاربر دائمی آواتار toopak
    تاریخ عضویت
    دی 1386
    محل زندگی
    192.168.1.1
    پست
    215

    نقل قول: استخراج اطلاعات به صورت گروه بندی شده

    کسی نظری نداره؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    240

    نقل قول: استخراج اطلاعات به صورت گروه بندی شده

    با سلام.

    در صورتی که شما می خواهید شرطی به صورت بازه زمانی اعمال کنید می توانید از کلمه کلیدی between استفاده کنید. و برای بدست آوردن تعداد می توانید از تابع Count استفاده کنید.

    به دو مثال زیر توجه کنید:
    ۱- تعداد در یک بازه

    SELECT COUNT(*)
    FROM TableName
    WHERE DATE BETWEEN 'تاریخ' AND 'تاریخ'


    ۲- تعداد در ۲۴ ساعت گذشته:

    SELECT COUNT(*)
    FROM TableName
    WHERE DATE BETWEEN 'ساعت شروع+تاریخ' AND 'تاریخ + ساعت پایان'


    این مثال ها فقط برای بهتر شدن دید شما بود، بنابراین شما با استفاده از between و count خیلی راحت خواهید توانست داده های مورد نظرتون را استخراج کنید.

    نکته : در صورتی که برای رسم چارت داده می خواهید یا باید از Group by برای بدست آوردن استفاده کنید یا اینکه چندین بار کوری اجرا کنید، تا داده های مورد نظرتان را استخراج کنید( مانند مثال های خودتان).

    انشالا به جواب مورد نظرتون برسید. موفق باشید./

  4. #4
    کاربر دائمی آواتار toopak
    تاریخ عضویت
    دی 1386
    محل زندگی
    192.168.1.1
    پست
    215

    نقل قول: استخراج اطلاعات به صورت گروه بندی شده

    ممنون دوست عزیز
    اینا رو که میدونم
    مشکلم با اختلاف بین ساعت و روز و ایناس
    برای مثال شما از تاریخ 92/02/01 تا 92/11/30 واسه به صورت ماهانه کوئری تعداد رکورد رو بگیر
    با این توضیح که 6ماه اول ما 31 روزه و بقیه 30 روز و اینکه من نمیخوام صد تا کوئری بفرستم واسه بانک و ترجیحا با دستور group میخوام این کار انجام بشه
    واسه گزارش روزانه و هفتگی تونستم با ساخت جدول مجازی و دستور union این کارو بکنم ولی واسه ماه با توجه به اختلاف بین تعداد روزهای ما و میلادی راحی به نظرم نرسیده فعلا

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    240

    نقل قول: استخراج اطلاعات به صورت گروه بندی شده

    کوری زیر را ببینید:


    select DATEPART(Year, DateColumn) as Year,DATEPART(month, DateColumn) as Month , count(Progress) as Total
    from dbo.TableName
    group by DATEPART(YEAR, DateColumn) , DATEPART(month, DateColumn)
    order by DATEPART(YEAR, DateColumn) , DATEPART(month, DateColumn);


    خروجی اجرای کوری:
    DATEPART.png


    مشکل اینه که این برای فقط ماهای میلادی مناسب است.

    یک راه ساده ولی غیر منطقی اینه که توی یک پروسیجر ۱۲ بار select بزنید و اونها را اجتماع کنید!

  6. #6
    کاربر دائمی آواتار toopak
    تاریخ عضویت
    دی 1386
    محل زندگی
    192.168.1.1
    پست
    215

    نقل قول: استخراج اطلاعات به صورت گروه بندی شده

    بله تمام مشکلات ما به خاطر همین اختلاف ماه ها و سالهامونه
    به قول شما اون که غیرمنطقیه ضمن اینکه علاوه بر زمانی که بابت صرف وقت برای دریافت نتایج میشه یه زمانی هم باید بزاریم واسه اینکه انتهای بازه رو بدست بیاریم که اونم به خاطر تفاوت تعداد روزهای ماه رو بانک بزرگ کاربر رو کلافه میکنه

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    553

    نقل قول: استخراج اطلاعات به صورت گروه بندی شده

    بهتره که فیلد تاریخ رو به صورت DATETIME و یا DATE ذخیره کنید و تاریخ ها هم میلادی باشه . بعد در هنگام نمایش به تاریخ شمسی تبدیل کنید .
    اگر از تاریه میلادی استفاده کنید از توابع مقایسه مقادیر بهتر می تونید استفاده کنید .

  8. #8
    کاربر دائمی
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    553

    نقل قول: استخراج اطلاعات به صورت گروه بندی شده

    نقل قول نوشته شده توسط toopak مشاهده تاپیک
    ممنون دوست عزیز
    اینا رو که میدونم
    مشکلم با اختلاف بین ساعت و روز و ایناس
    برای مثال شما از تاریخ 92/02/01 تا 92/11/30 واسه به صورت ماهانه کوئری تعداد رکورد رو بگیر
    با این توضیح که 6ماه اول ما 31 روزه و بقیه 30 روز و اینکه من نمیخوام صد تا کوئری بفرستم واسه بانک و ترجیحا با دستور group میخوام این کار انجام بشه
    واسه گزارش روزانه و هفتگی تونستم با ساخت جدول مجازی و دستور union این کارو بکنم ولی واسه ماه با توجه به اختلاف بین تعداد روزهای ما و میلادی راحی به نظرم نرسیده فعلا
    ابتدا تاریخ شمسی رو به میلادی تبدیل کن بعد با فیلد تاریخ درون دیتابیس مقایسه کن .

تاپیک های مشابه

  1. جمع رکوردها توی کوئری گروه بندی شده
    نوشته شده توسط sh2007 در بخش T-SQL
    پاسخ: 6
    آخرین پست: جمعه 30 دی 1390, 22:36 عصر
  2. مبتدی: نمایش مقادیر گروه بندی شده در کادر متنی
    نوشته شده توسط Fastdesign در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 12 دی 1390, 23:51 عصر
  3. ویرایش یک list view گروه بندی شده
    نوشته شده توسط yakamous در بخش C#‎‎
    پاسخ: 1
    آخرین پست: سه شنبه 10 اسفند 1389, 09:32 صبح
  4. گرفتن اطلاعات به صورت صفحه بندی و یک مشکل
    نوشته شده توسط majnun در بخش SQL Server
    پاسخ: 7
    آخرین پست: جمعه 23 مهر 1389, 17:41 عصر
  5. گرفتن رکورد از بانک به صورت صفحه بندی شده (هربار 10 رکورد بگیره )
    نوشته شده توسط majnun در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 3
    آخرین پست: جمعه 23 مهر 1389, 17:26 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •