PDA

View Full Version : نمایش بیشترین مقدار



roya_borhany
یک شنبه 20 دی 1388, 18:31 عصر
سلام. من از طریق کد زیر مقدار تکرار فیلد مورد نظرم را جستجو میکنم:


SELECT mokhatab.namecode,COUNT(*)
FROM tprogram INNERJOIN
mokhatab ON tprogram.mcode = mokhatab.mcode
GROUPBY mokhatab.namecode

که مقدار تکرار هر کد را به همراه نام آن نمایش میدهد. حالا میخواهم از این خروجی بیشترین مقدار را فقط به من نمایش دهد. باید چه کار کنم؟
ممنون

benyaminrahimi
یک شنبه 20 دی 1388, 21:46 عصر
راه سادش اينه که شما اين تيکه کد رو تو يک view يا function ذخيره کنيد

بعد تابع max رو روي ويوي جديد بزنيد

select max(field) from view

البته function باشه بهتره

Hamid.Kad
یک شنبه 20 دی 1388, 21:54 عصر
SELECT mokhatab.namecode,COUNT(*) FROM tprogram r
INNER JOIN mokhatab ON r.mcode = mokhatab.mcode
GROUP BY r.mokhatab.namecode HAVING COUNT(*)= (SELECT MAX(f1) FROM
(SELECT COUNT(mokhatab.namecode) f1 FROM tprogram
INNER JOIN mokhatab ON tprogram.mcode = mokhatab.mcode
GROUP BY mokhatab.namecode) dd)

hozouri
دوشنبه 21 دی 1388, 11:02 صبح
Select mokhatab.namecode, Max(C) From
(SELECT mokhatab.namecode,COUNT(*) AS C
FROM tprogram INNERJOIN
mokhatab ON tprogram.mcode = mokhatab.mcode
GROUPBY mokhatab.namecode)
Group By mokhatab.namecode

roya_borhany
دوشنبه 21 دی 1388, 16:19 عصر
Select mokhatab.namecode, Max(C) From
(SELECT mokhatab.namecode,COUNT(*) AS C
FROM tprogram INNERJOIN
mokhatab ON tprogram.mcode = mokhatab.mcode
GROUPBY mokhatab.namecode)
Group By mokhatab.namecode


ممنون . ولی هنگام اجرا با خطای زیر مئاجه شدم. مشکل چیست؟


Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'Group'.

roya_borhany
دوشنبه 21 دی 1388, 16:26 عصر
SELECT mokhatab.namecode,COUNT(*) FROM tprogram r
INNER JOIN mokhatab ON r.mcode = mokhatab.mcode
GROUP BY r.mokhatab.namecode HAVING COUNT(*)= (SELECT MAX(f1) FROM
(SELECT COUNT(mokhatab.namecode) f1 FROM tprogram
INNER JOIN mokhatab ON tprogram.mcode = mokhatab.mcode
GROUP BY mokhatab.namecode) dd)
ممنون
اگر ممکن است توضیحاتی در رابطه با r که در کد استفاده کرده اید بدهید.اصلا چی هست و چرا استفاده کرده اید. چون هنگام اجرا با خطایی مواجه میشوم که مربوط به این سطر است و چون کاراییش را نمیدانم نمیتوانم خطا را حل کنم. ممنون

Hamid.Kad
دوشنبه 21 دی 1388, 17:11 عصر
اون r بخاطر تغییر نام موقتی جدول tprogram استفاده شده. یه r زیاد نوشته بودم. درستش کردم. روی این سیستم sql server نداشتم که تست کنم.
SELECT mokhatab.namecode,COUNT(*) FROM tprogram r
INNER JOIN mokhatab ON r.mcode = mokhatab.mcode
GROUP BY mokhatab.namecode HAVING COUNT(*)= (SELECT MAX(f1) FROM
(SELECT COUNT(mokhatab.namecode) f1 FROM tprogram
INNER JOIN mokhatab ON tprogram.mcode = mokhatab.mcode
GROUP BY mokhatab.namecode) dd)

hozouri
چهارشنبه 23 دی 1388, 08:42 صبح
ممنون . ولی هنگام اجرا با خطای زیر مئاجه شدم. مشکل چیست؟


Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'Group'.


سلام

تا اونجایی که من اطلاعاع دارم Group By باید جدا از هم نوشته شوند ولی شما در خط آخر GroupBy رو به هم بچسبونید.

Hamid.Kad
چهارشنبه 23 دی 1388, 20:40 عصر
با اینکه حر شما صحیحه،ولی مشکل از اونجاست که بعد از پرانتز بسته باید یک نام مستعار به دیتاست موجود در پرانتز بدید. مثلاً در پست 7 از dd استفاده شده. اگر دقت کنید به کلمه Group گیر داده. یعنی ایشون خودشون این کار رو انجام دادندو جدا کرده اند.