2011-09-25 10 views
5

Tengo una base de datos de la siguiente manera:MySQL encontrar el modo de múltiples subconjuntos

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

Estoy intentando conseguir el modo (mayor valor que ocurren con frecuencia) para la columna de díadelasemana para cada cliente. Básicamente sería el día de la semana en que cada cliente compra más. Me gusta:

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

Cualquier ayuda sería genial, gracias.

+0

¿Cómo identifica una compra? ¿Cuál es su clave principal? ¿Hay un campo 'purchaseId' que no nos hayas mostrado? –

+0

no, este es el db completo. – screechOwl

+0

Entonces, ¿qué es usted PK? ¿Es {custNum, date}? Si es así, ¿cómo distingue entre dos compras del mismo usuario que suceden el mismo día? ¿Los unificas en la misma fila? –

Respuesta

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 
) 
Cuestiones relacionadas