@Nikolaymac

Как составить запрос со сложным условием и подсчетом количества Mysql?

ade6323dd10d47b0af301788f1156cd8.png
Есть таблица визитов и таблица пользователей.
Что нужно получить - Выбрать всех пользователей с id_client = 152 в рамках определенных датах допустим за один месяц и что бы количество посещений было больше 2
+ посчитать сколько раз был пользователь в этот период (группировка по дням) то есть два визита в день.. считается как один.

написал запрос.. но немного не то
SELECT count(*) as count, MAX(vizits.time_vizit) as time, DATE_FORMAT(FROM_UNIXTIME(vizits.time_vizit), '%e.%m') AS date_formatted,vizits.id_user,vizits.id_ap,bdate,first_name,last_name,city,mobile_phone,mac,photo,sex,uid
FROM `vizits` LEFT JOIN users_hotspot ON vizits.id_user = users_hotspot.id_user
WHERE vizits.id_client='152' AND users_hotspot.type_auth='2' AND time_vizit BETWEEN 1488308400 AND 1490986800
GROUP BY vizits.id_client,date_formatted, vizits.id_user HAVING count > 2
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `v`.`id_user`, `v`.`count`, ...
  FROM (
    SELECT `id_user`, COUNT(DISTINCT FROM_UNIXTIME(time_vizit, '%Y%m%d')) AS `count`
      FROM `vizits`
      WHERE `time_vizit` BETWEEN UNIX_TIMESTAMP(:startTime) AND UNIX_TIMESTAMP(:endTime)
        AND `id_client` = :clientId
      GROUP BY `id_user`
      HAVING COUNT(*) > 2
  ) AS `v`
  LEFT JOIN `users_hotspot` AS `uh` ON `uh`.`id_user` = `v`.`id_user`
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы