MySQL найти режим нескольких подмножеств - PullRequest
5 голосов
/ 25 сентября 2011

У меня есть такая база данных:

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

Я пытаюсь получить режим (наиболее часто встречающееся значение) для столбца dayOfWeek для каждого клиента.По сути, это будет день недели, в который каждый покупатель больше всего покупает.Как:

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

Любая помощь будет большой спасибо.

1 Ответ

3 голосов
/ 25 сентября 2011
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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...