PDA

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



saeedvir
شنبه 21 آذر 1394, 15:53 عصر
سلام ، جدولی به صورت زیر هست

137415

چه طور بیشترین مقدار تکرار user_id رو پیدا کنم ؟ مثلا با فرض shop_id برابر 37
برای مواردی که دو تا user_id تعداد تکرار یکسان دارند چی کار کنم ؟

hamedarian2009
شنبه 21 آذر 1394, 16:51 عصر
از این کوئری باید استفاده کنی . نام جدول رو shops در نظر گرفتم


select
distinct g.shop_id,
g.cnt
from
(
select
distinct shop_id,
count(shop_id) cnt
from
shops
group by
shop_id
) g
inner join
(
select
max(s.cnt) max_cnt
from
(
select
distinct shop_id,
count(shop_id) cnt
from
shops
group by
shop_id
) s
) m
on
m.max_cnt = g.cnt;

توی cnt بیشترین تکرار رو قرار میده

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

saeedvir
یک شنبه 22 آذر 1394, 20:30 عصر
دوست عزیز ممنون به خاطر وقتی که گذاشتید ،

دوست عزیز من کوئری را به کوئری زیر تغییر دادم ، اگر بخوام شرط بگذارم که مثلا برای shop_id = 37 این کار رو انجام بده باید شرط زیر را کجای کوئری قرار بدم ؟


where `shop_id` = '37'

اینم کوئری : که user_id که بیشترین تکرار را دارد.


select
distinct g.user_id,
g.cnt
from
(
select
distinct user_id,
count(user_id) cnt
from
`rt_transaction_header`
group by
user_id
) g
inner join
(
select
max(s.cnt) max_cnt
from
(
select
distinct user_id,
count(user_id) cnt
from
`rt_transaction_header`
group by
user_id
) s
) m
on
m.max_cnt = g.cnt;



بازم ممنون.