Сгруппировать по «прочим», где группы с небольшим вкладом включены в поле «прочее» - MySQL - PullRequest
1 голос
/ 04 мая 2009

Я бы хотел, чтобы GROUP BY элемент в моей таблице, который имеет соответствующую денежную стоимость. Это я могу рассчитать в процентах, однако в списке часто слишком много элементов (слишком много, чтобы быть полезным, например, в графике) Следовательно, я хотел бы поместить те предметы, которые имеют общий вклад менее, чем, скажем, 5%, в группу «Другие». Какие-нибудь мысли?

спасибо (используя MySQL> v5)

Ответы [ 3 ]

1 голос
/ 04 мая 2009

Похоже, профсоюз может помочь, например, (конечно, в зависимости от того, как организован ваш стол):

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, но в какой-то момент, возможно, стоит перейти на процедурные подходы, как подсказывают другие респонденты.

0 голосов
/ 04 мая 2009

создайте временную таблицу и получите две инструкции вставки, одну из ваших основных вещей и одну из другой группы, а затем просто выберите все из временной таблицы.

0 голосов
/ 04 мая 2009

Вы просили мысли. Я мог бы написать SQL для вас, но мне интересно (основываясь на вашем общем дизайне), вам может оказаться не так просто выполнить немного больше работы в BL или UI, например, с массивом, чтобы выполнить то же самое. С одной стороны, SQL обязательно будет более сложным и менее эффективным, чем вы могли бы.

...