「その他」によるグループ化。貢献度の低いグループは「その他」フィールドに含まれます-MySQL

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

  •  03-07-2019
  •  | 
  •  

質問

金銭的価値が関連付けられているテーブル内のアイテムをグループ化したいと思います。これは割合で計算できますが、リストに含まれるアイテムが多すぎることがよくあります(グラフなどではあまりにも多すぎます)。そのため、合計が約5%未満であるアイテムを「その他」グループに入れたいと思います。何かご意見は?

ありがとう(MySQL> v5を使用)

役に立ちましたか?

解決

UNIONが役立つ可能性があるように見えます。 (もちろん、テーブルの構成方法によって異なります):

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)

パーセントフィールドがなく、値フィールドのみ(たとえば、%がアイテムの値の総計に対する割合の100倍として動的に計算される必要がある場合)から総計を取得できますさらに別のネストされたSELECTですが、ある時点で、他の回答者が示唆するように手続き型アプローチに切り替える価値があるかもしれません。

他のヒント

あなたは考えを求めました。私はあなたのためにSQLを書くことができますが、(あなたの全体的な設計に基づいて)あなたは同じことを達成するために、例えば配列を使用してBLまたはUIでもう少し作業を行うのが簡単ではないと思うかもしれません。一つには、SQLは必然的にあなたが望むよりも複雑で効率が悪くなります。

一時テーブルを作成し、2つのinsertステートメント(1つは主なもの、もう1つはグループ)を用意して、一時テーブルからすべてを選択します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top