2011-09-25 16 views
5

modunu bulmak: Ben her müşteri için haftanınGünü sütunun modunu (en sık ortaya çıkan değer) almaya çalışıyorumMySQL Ben bir veritabanı böyle sahip birden alt kümelerinin

custNum   date  purchase  dayOfWeek 
    333   2001-01-01 23.23   1 
    333   2001-03-04 34.56   5 
    345   2008-02-02 22.55   3 
    345   2008-04-05 12.35   6 
    ...   ...   ...   ... 

. Temel olarak, her müşterinin en çok alışveriş yaptığı haftanın günü olacaktır. Gibi:

custNum   max(count(dayofweek(date))) 
333     5 
345     3 
356     2 
388     7 
...     ... 

Herhangi bir yardım çok teşekkür ederim.

+0

Bir satın alma işlemini nasıl tanımlarsınız - birincil anahtarınız nedir? Bize göstermediğiniz bir 'PurchaId 'alanı var mı? –

+0

hayır, bu tüm db. – screechOwl

+0

O zaman PK nedir? {CustNum, date} var mı? Öyleyse, aynı günde gerçekleşen aynı kullanıcının iki satın alımını nasıl ayırt edersiniz? Onları aynı sıraya topladın mı? –

cevap

3
select custNum, dayOfWeek 
from tableName t 
group by custNum, dayOfWeek 
having dayOfWeek = (
    select dayOfWeek 
    from tableName 
    where custNum = t.custNum 
    group by dayOfWeek 
    order by count(*) desc, dayOfWeek 
    limit 1 
)