Renvoie une variante (chaîne) indiquant où un nombre apparaît dans une série calculée de plages.
Syntaxe
Partition(nombre, début, arrêt, intervalle)
La syntaxe de la fonction Partition contient les arguments suivants :
| Argument | Description |
|---|---|
| nombre | Obligatoire. Nombre entier que vous souhaitez évaluer par rapport aux plages. |
| de démarrage | Obligatoire. Nombre entier qui est le début de la plage globale de nombres. Le nombre ne peut pas être inférieur à 0. |
| arrêter | Obligatoire. Nombre entier correspondant à la fin de la plage globale de nombres. Le nombre ne peut pas être égal ou inférieur à start. |
| intervalle | Obligatoire. Nombre entier qui spécifie la taille des partitions dans la plage globale de nombres (entre le début et l’arrêt). |
Remarques
La fonction Partition identifie la plage particulière dans laquelle le nombre tombe et renvoie une variante (chaîne) décrivant cette plage. La fonction Partition est particulièrement utile dans les requêtes. Vous pouvez créer une requête de sélection qui indique combien de commandes entrent dans différentes plages, par exemple, des valeurs de commande comprises entre 1 et 1000, de 1001 à 2000, etc.
Le tableau suivant montre comment les plages sont déterminées à l’aide de trois ensembles d’arguments de démarrage, d’arrêt et d’intervalle . Les colonnes Première plage et Dernière plage indiquent le retour de la partition . Les plages sont représentées par lowervalue :uppervalue, où l’extrémité inférieure (lowervalue) de la plage est séparée de l’extrémité supérieure (uppervalue) de la plage par un signe deux-points ( :).
| de démarrage | arrêter | intervalle | Avant le premier | Première plage | Dernière plage | Après la dernière |
|---|---|---|---|---|---|---|
| 0 | 99 | 5 | " :-1" | " 0: 4" | " 95: 99" | " 100: " |
| 20 | 199 | 10 | " : 19" | " 20: 29" | " 190: 199" | " 200: " |
| 100 | 1010 | 20 | " : 99" | " 100: 119" | " 1000: 1010" | " 1011: " |
Dans le tableau ci-dessus, la troisième ligne affiche le résultat lorsque le démarrage et l’arrêt définissent un ensemble de nombres qui ne peuvent pas être divisés uniformément par intervalle. La dernière plage s’étend jusqu’à l’arrêt (11 nombres) même si l’intervalle est de 20.
Si nécessaire, Partition renvoie une plage avec suffisamment d’espaces de début pour qu’il y ait autant de caractères à gauche et à droite des deux-points qu’il y a de caractères dans l’arrêt, plus un. Ainsi, si vous utilisez l’option Partition avec d’autres nombres, le texte obtenu sera traité correctement lors de toute opération de tri ultérieure.
Si l’intervalle est égal à 1, la plage est nombre :nombre, quels que soient les arguments de début et d’arrêt . Par exemple, si l’intervalle est 1, le nombre est 100 et l’arrêt est 1000, la partition renvoie « 100 : 100 ».
Si l’une des parties est Null, Partition renvoie une valeur Null.
Exemples de requête
| Expression | Résultats |
|---|---|
| SELECT Partition(unitprice,40,240,20) AS PriceRange, count(productsales.unitprice) AS Count FROM productSales GROUP BY Partition(unitprice,40,240,20) ; | Crée un ensemble de plages pour les valeurs du champ « prixunitaire » de « start"(40) à « stop"(240) avec la même taille « intervalle"(20) et calcule le nombre de « prixunitaire » dans les plages respectives. Affiche les plages dans la colonne Gamme de prix et le nombre dans la colonne « Nombre ». |
Exemple de VBA
Cet exemple suppose que vous avez une table Commandes qui contient un champ Transport. Il crée une procédure de sélection qui compte le nombre de commandes pour lesquelles les frais de transport entrent dans chacune des différentes plages. La fonction Partition est utilisée en premier lieu pour établir ces plages, puis la fonction SQL Count compte le nombre de commandes dans chaque plage. Dans cet exemple, les arguments de la fonction Partition sont début = 0, arrêt = 500, intervalle = 50. La première plage serait donc de 0:49, et ainsi de suite jusqu’à 500.
SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,
Count(Orders.Freight) AS Count
FROM Orders
GROUP BY Partition([freight],0,500,50);