PDA

View Full Version : جست و جو در SQl



uservb
دوشنبه 09 مرداد 1391, 19:41 عصر
1- ما یه جدول حضور داریم که 4 تا فیلد داره : codehozor,tarikh,saat,codekarmand
اگه ما توی جدول Table_Hozor حضور افرادی ثبت شده باشه ولی این افراد هنوز کد حضور ندارند و جلوی فیلد کد حضورشون خالی باشه
اونوقت وقتی دستور زیر رو استفاده می کنیم توی خروجی یه سطر رو هم برای این افراد در نظر میگیره . چه جوری میشه کاری کرد که
دیگه این ها رو هم نشماره و توی خروجی نده .


SELECT TOP(5) [codekarmand], [ItemCount]
FROM
(
SELECT [codekarmand], COUNT(*) AS [ItemCount]
FROM [Table_Hozor]
GROUP BY [codekarmand]
) AS DT
ORDER BY [ItemCount] DESC;

مثلا خروجی به این صورت میشه :


کد کارمند : 3 5 3 4
تعداد : 9 9 8 7 6

همون طور که میبینی برای کد کارمند جای خالی میمونه.
و برای اینکه همین کار رو در بین 2 تاریخ انجام بدیم چه طور هست و یا در یک ماه خاص.
و اینکه من یکم روی کد بالا کار کردم ولی نتونستم کاری کنم که تعداد حضور یه فرد خاص رو به دست بیارم. مثلا تعداد حضور فردی که کد
حضورش 3 هست .
یه مورد دیگه هم اینکه من میخوام میانگین حضور ماهانه رو به دست بیارم . مثلا ما بهش ماه رو میدیم (1391/01) و بعد به دست بیاریم
که توی این ماه به طور میانگین چند حضور در روز زده شده.
و غیبت بیش از 2 روز. کارمندایی که بیش ار 2 روز غیبت دارند(حضوری ثبت نکردند توی جدول Table_Hozor ) رو به دست بیارم.

چه جوری میشه کاری کرد که نتیجه به دست اومده هم بر اساس تاریخ و هم ساعت مرتب بکنه.
یعنی اول بر اساس تاریخ بده و بعد بین اون تاریخ ها نتیجه رو بر اساس ساعت مرتب کنه.

baktash.n81@gmail.com
یک شنبه 15 مرداد 1391, 07:43 صبح
برای فیلتر کن نتایج جستجو با دستور Group by می تونید از Having استفاده کنید ...
دلیل اینکه از Select تو درتو استفاده کردید رو نفهمیدم ... !؟

به هر حال برای فیلتر کردن کل نتایج می تونید از Where در آخر کدتون استفاده کنید ...