Maison >base de données >tutoriel mysql >Comment créer des histogrammes dans MySQL avec des intervalles prédéfinis ?

Comment créer des histogrammes dans MySQL avec des intervalles prédéfinis ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 17:47:02697parcourir

How to Create Histograms in MySQL with Predefined Intervals?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn