Mysql выбрать элементы, которые встречаются несколько раз в данном диапазоне дат

0

Таблица клиентов с покупками в диапазоне дат

Имея некоторый вызов, делая это.

  1. Выберите всех клиентов, которые совершили более 2 покупок за час, начиная с заданного времени, например ,.2016-01-01.13: 00: 00
  2. Выберите всех клиентов, которые совершили более 2 покупок в день (24 часа), начиная с данного дня и времени, например. 2016-01-01.15: 30: 05

    Select count(name) from cust_table where count(name) 
    IN (BETWEEN (2016-01-01.13:00:00, 2016-01-01.14:00:00))
    
  • 0
    Причина учиться - учиться. Если мы сделаем домашнее задание для вас, вы многому не научитесь.
  • 0
    Не домашнее задание. Актуальная реализация. Я застрял с частью SQL
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Вам нужно получить идентификаторы (имена пользователей или идентификатор) для всех пользователей, совершивших более двух покупок. Должно работать следующее:

SELECT name FROM purchases GROUP BY name HAVING COUNT(name) > 2

Чтобы получить такие строки, где были сделаны покупки между некоторыми датами, просто добавьте предложение WHERE, чтобы оно стало чем-то вроде этого

SELECT name FROM purchases WHERE pdate BETWEEN (2016-01-01.13:00:00) AND (2016-01-01.14:00:00) GROUP BY name HAVING COUNT(name) > 2

То, что это делает, - группировать строки таблицы по имени с покупками между указанными датами. Затем он фильтрует группы, используя предложение HAVING COUNT(name) > 2, чтобы извлекать только строки, которые появляются более двух раз.

  • 0
    Благодарю. Значение datetime выдает ошибку sql около 13:00. Но когда я только встречаюсь, это работает. значит мы не можем найти между датами?
  • 0
    Проверьте этот ответ для правильного формата datetime: stackoverflow.com/a/5786722/1256113

Ещё вопросы

Сообщество Overcoder
Наверх
Меню