Extraction de données d'histogramme dans MySQL
MySQL fournit nativement une prise en charge limitée pour le regroupement des données dans des intervalles prédéfinis pour le traçage d'histogrammes. Cependant, cette tâche peut être réalisée en utilisant une approche modifiée.
La requête SQL que vous avez fournie :
select total, count(total) from faults GROUP BY total;
génère un nombre excessif de lignes. Pour regrouper les données dans des compartiments prédéfinis, vous pouvez envisager la solution de contournement suivante :
ROUND(numeric_value, -2) AS bucket,
COUNT(*) AS COUNT, RPAD('', LN(COUNT(*)), '*') AS bar
FROM my_table
GROUP BY bucket;
En ajustant l’incrément d’arrondi, vous pouvez définir les tailles des bacs. Par exemple, ROUND(numeric_value, -2) regroupe les données en tranches de 100 (-200 à -100, -100 à 0, etc.).
La modification du décalage dans l'opération ROUNDing garantit que la première tranche contient autant d’éléments que de buckets suivants. Pour ROUND(numeric_value, -1), numeric_value dans la plage [0,4] (5 éléments) sera placé dans le premier compartiment, tandis que [5,14] (10 éléments) dans le second, [15,24] dans le troisièmement, à moins que numeric_value soit décalé de manière appropriée via ROUND(numeric_value - 5, -1).
À titre d'exemple, la requête suivante génère un histogramme avec une mise à l'échelle logarithmique des barres :
SELECT ROUND(total, -2) AS bucket, COUNT(*) AS COUNT, RPAD('', LN(COUNT(*)), '*') AS bar FROM faults GROUP BY bucket;
Cette approche fournit une méthode rapide et adaptable pour créer des histogrammes dans MySQL, permettant une personnalisation facile selon des cas d'utilisation spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!