J'ai une table appelée user_logins qui suit les connexions utilisateur dans le système. Il dispose de trois colonnes, login_id, user_id et login_timeMois de regroupement MySQL basé sur TIMESTAMP
login_id(INT) | user_id(INT) | login_time(TIMESTAMP)
------------------------------------------------------
1 | 4 | 2010-6-14 08:54:36
1 | 9 | 2010-7-16 08:56:36
1 | 9 | 2010-8-16 08:59:19
1 | 9 | 2010-8-16 09:00:24
1 | 1 | 2010-8-16 09:01:24
Je cherche à écrire une requête qui déterminera le nombre de connexions uniques pour chaque jour et compter que pour chaque mois. Si dans un jour un utilisateur s'est connecté deux fois, il ne sera compté qu'une seule fois. L'exemple de sortie serait le suivant
month(VARCHAR) | logins(INT)
---------------------------
June | 1
July | 1
August | 2
dans le résultat tableau Août a seulement 2 parce que le user_id 9 connecté deux fois par jour et l'exploitation forestière dans le système ne compte que 1 connexion pour ce jour-là. Avec l'aide du débordement de pile j'ai écrit une requête qui réalise ceci mais pour une raison quelconque quand j'utilise la fonction DATE_FORMAT avec juste '% M' quand j'essaye de lire les valeurs dans Java en utilisant Hibernate cela provoque l'objet à corrompre et non reconnu comme une chaîne. Je suppose que c'est probablement parce que ma requête fait quelque chose de mal. Ma question est la suivante:
SELECT login_date, SUM(logins) as numLogins FROM (
SELECT
DATE_FORMAT(DATE(login_time), '%M') AS login_date,
COUNT(DISTINCT login_id) AS logins
FROM user_logins
WHERE login_time > DATE_SUB(NOW() - INTERVAL 1 YEAR)
GROUP BY DATE(login_time))
AS Z GROUP BY(login_date)";
Je ne sais pas si elle est une faute de frappe ici, ou si vous avez copié le code, mais le SQL vous a « frmo » au lieu de « FROM » sur à la fin de la première ligne. – gabe3886
oui juste une faute de frappe de ma part édité. – IamBanksy