@Nurshat

Как узнать количество повторяющихся записей в mysql?

Название не совсем отражает суть, но все же)
Суть вот в чем, есть таблица со списком людей которые посещали центр с такими столбцами
id - int, ai
user_id - int
visit_date - datatime

по задаче надо найти группу людей (не менее 5 человек) которые вместе посещали центр хотя бы 2 раза за последнюю неделю.

я, честно, не представляю как это сделать на sql, не уверен даже что это возможно сделать с использованием только sql, так что буду рад любой помощи, заранее спасибо)
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ответы на вопрос 2
LazyTalent
@LazyTalent
Data Engineer, Freelancer
Берем первую запись из visit_time заносим ее в массив, прогоняем ее по всей базе на совпадение, кол-во совпадений заносим в массив. Берем вторую запись, сравниваем ее с первым массивом на совпадение (если == то отбрасываем), прогоняем ее по все базе... Выводим результат.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если "вместе" означает в один день, то пересечение посетителей для двух конкретных дат:
SELECT COUNT(*), GROUP_CONCAT(`t1`.`user_id` SEPARATOR ',')
    FROM `table` AS `t1`
    JOIN `table` AS `t2` ON `t2`.`user_id` = `t1`.`user_id`
                         AND `t1`.`visit_date` = :date1
                         AND `t2`.`visit_date` = :date2

Перебор дат можно сделать в приложении или в хранимой процедуре.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы