「その他」によるグループ化。貢献度の低いグループは「その他」フィールドに含まれます-MySQL
質問
金銭的価値が関連付けられているテーブル内のアイテムをグループ化したいと思います。これは割合で計算できますが、リストに含まれるアイテムが多すぎることがよくあります(グラフなどではあまりにも多すぎます)。そのため、合計が約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つはグループ)を用意して、一時テーブルからすべてを選択します。
所属していません StackOverflow