金銭的価値が関連付けられているテーブル内の項目を GROUP BY したいと考えています。これはパーセンテージで計算できますが、リスト内の項目が多すぎることがよくあります (多すぎてグラフなどで役に立ちません)。そのため、全体への貢献度が 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 ですが、他の回答者が示唆しているように、ある時点で手続き型アプローチに切り替える価値があるかもしれません。
一時テーブルを作成し、プライマリのものと他のグループの2つの挿入ステートメントを作成してから、一時テーブルからすべてを選択します。
あなたは考えを求めました。私はあなたのために SQL を書くことができますが、(あなたの全体的な設計に基づいて) BL や UI で、たとえば配列を使って、同じことを達成するためにもう少し作業を行うのは簡単ではないのではないかと思います。1 つには、SQL は必然的に複雑になり、思ったよりも効率が悪くなります。