2011-09-25 18 views
5

की विधा को खोजने मैं इस तरह एक डेटाबेस है:MySQL कई सबसेट

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 
    ...   ...   ...   ... 

मैं प्रत्येक ग्राहक के लिए सप्ताह का दिन स्तंभ के लिए मोड (सबसे अधिक बार उत्पन्न मूल्य) प्राप्त करने के लिए कोशिश कर रहा हूँ। असल में यह सप्ताह के दिन प्रत्येक ग्राहक की दुकानों का दिन होगा। पसंद:

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

कोई भी मदद बहुत धन्यवाद होगी।

+0

आप खरीद की पहचान कैसे करते हैं - आपकी प्राथमिक कुंजी क्या है? क्या कोई 'खरीद आईडी' फ़ील्ड है जिसे आपने हमें नहीं दिखाया है? –

+0

नहीं, यह पूरी डीबी है। – screechOwl

+0

तो आप पीके क्या है? क्या यह {custNum, date} है? यदि हां, तो आप उसी दिन एक ही उपयोगकर्ता द्वारा दो खरीदारियों के बीच अंतर कैसे करते हैं? क्या आप उन्हें एक ही पंक्ति में एक साथ जोड़ते हैं? –

उत्तर

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 
) 
संबंधित मुद्दे