Considérons ce tableau en spécifiant combien de fois une personne a acheté une propriété.Comptez le nombre de lignes distinctes pour plusieurs valeurs
+--------+----------+
| user | property |
+--------+----------+
| john | car |
| john | car |
| john | house |
| peter | car |
| peter | car |
| amanda | house |
| amanda | house |
+--------+----------+
J'ai besoin de savoir combien de fois une voiture a été acheté une fois, combien de fois une maison a été achetée une fois, etc. Quelque chose comme ceci:
+----------+---+---+
| property | 1 | 2 |
+----------+---+---+
| cars | 4 | 2 |
| house | 3 | 1 |
+----------+---+---+
- Combien de fois une voiture était acheté? Quatre, deux pour peter et deux pour john.
- Combien de fois une voiture a été achetée deux fois? Deux, pour les mêmes gars.
- Combien de fois une maison a-t-elle été achetée? Trois, deux pour amanda et une fois pour john.
- Combien de fois une maison a été achetée deux fois? Seulement une fois , pour amanda
Est-ce possible de le faire en utilisant uniquement des requêtes SQL?
- Je ne me soucie pas des performances ou des moyens hackish.
- Il y a plus de deux fréquences.
Il existe un ensemble fixe de temps qu'une personne peut acheter une propriété (5). Il n'est donc pas difficile de spécifier les colonnes manuellement dans la requête. Je veux dire qu'il n'y a pas de problème à faire quelque chose comme:
SELECT /* ... */ AS 1, /* ... */ AS 2, /* ... */, AS 3 /* ... */
C'est génial! Une petite note cependant, c'est qu'il me dit le nombre de fois qu'un certain utilisateur a acheté une propriété. Par exemple, si ** amanda ** achète une autre maison, le nombre de fois qu'une maison a été achetée ** deux fois ** serait 0 (même si Amanda a acheté une maison deux fois auparavant). Encore, assez proche, et c'est encore très utile. Si rien d'autre n'apparaît, c'est la bonne réponse. – Veehmot
Vous pouvez remplacer 'HAVING cnt = 2' par' HAVING cnt> = 2'. ou ajouter une autre clause; où mettre 'HAVING cnt = 3' donnerait tous ceux qui ont été achetés trois fois. : P – hjpotter92
Fonctionne plutôt bien, merci beaucoup! – Veehmot