Groupe par 'autre', où les groupes avec une petite contribution sont inclus dans le champ 'autre' - MySQL

StackOverflow https://stackoverflow.com/questions/821370

  •  03-07-2019
  •  | 
  •  

Question

Je voudrais grouper par un élément de ma table, qui a une valeur monétaire associée. Je peux le calculer en pourcentage, mais il y a souvent trop d'éléments dans la liste (trop nombreux pour être utiles, par exemple dans un graphique). Par conséquent, je voudrais mettre les éléments qui ont une contribution totale inférieure à 5%, par exemple, dans un groupe "Autre". Des pensées?

merci (avec MySQL > v5)

Était-ce utile?

La solution

On dirait qu’UNION pourrait aider, par exemple (selon l'organisation de votre table, bien sûr):

SELECT itemname, SUM(percent) AS pc FROM items
GROUP BY itemtype
HAVING SUM(percent) >= 0.05
UNION
SELECT 'Other', SUM(*) FROM
  (SELECT SUM(percent) FROM items
   GROUP BY itemtype
   HAVING SUM(percent) < 0.05)

Si vous n'avez pas de champ de pourcentage mais seulement (par exemple) un champ de valeur (le pourcentage doit donc être calculé dynamiquement comme étant 100 fois la fraction de la valeur d'un élément par rapport au total général), vous pouvez obtenir le total général de un autre SELECT imbriqué, mais à un moment donné, il pourrait être utile de passer aux approches procédurales comme le suggèrent les autres répondants.

Autres conseils

Vous avez demandé des idées. Je pourrais écrire le code SQL pour vous, mais je me demande (en fonction de votre conception globale) que vous ne trouverez peut-être pas plus facile d'effectuer un peu plus de travail dans le BL ou l'interface utilisateur, avec un tableau par exemple, pour accomplir la même chose. D'une part, le code SQL sera nécessairement plus compliqué et moins efficace que ce que vous pourriez souhaiter.

créez une table temporaire et définissez deux instructions insert, l’un de vos éléments principaux et l’un de l’autre groupe, puis sélectionnez tout simplement dans la table temporaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top