J'ai un tableau avec l'identifiant de l'utilisateur, la ville et la date de réservation. J'ai besoin de connaître les utilisateurs qui ont visité une seule ville et non plusieurs villes au cours d'une plage de dates.
SELECT ID de l'utilisateur, ville, COUNT(*) comme résultat DE visites OÙ start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00 ET end_ts <= 1676419200 -- 1676419200 = 15.2.2023 00:00 GROUP BY user_id, city
user_id | ville | résultat | ≪/tr> ≪/tête>|||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10 | Munich | 1 | ≪/tr>|||||||||||||||||||||
11 | Barcelone | 2 | ≪/tr>|||||||||||||||||||||
11 | Berlin | 1 | ≪/tr>|||||||||||||||||||||
12 | Barcelone | 1 | ≪/tr>|||||||||||||||||||||
13 | Prague | 2 | ≪/tr>|||||||||||||||||||||
11 | Barcelone | 1 | ≪/tr>|||||||||||||||||||||
13 | Berlin | 1 | ≪/tr>
Veuillez ajouter la condition HAVING à votre requête :
Si vous devez compter uniquement le nombre de villes uniques, vous pouvez utiliser COUNT(DISTINCT(city)) et les supprimer du regroupement comme ceci :