сумма mysql в зависимости от части содержимого ячейки - PullRequest
0 голосов
/ 12 октября 2011

У меня есть эта таблица:

id    value     ref
1       0        10000
2       5        11000
3       5        11100
4       2        11101
5       2        11102
6      10        12000
...    ...         ....

Как мне этого добиться:

ref    sum(value)
10000   14         <-- 5 + 5 + 2 + 2
11000   9          <-- 5 + 2 + 2
11100   4          <-- 2 + 2
12000   10         <-- and so on

Я не могу решить, является ли этот дизайн действительным, он не будет работать,или я что-то упускаю.

У меня нет запроса sql, чтобы показать вам, ребята.

Может быть, вы используете regex?о котором я читал, но не до конца понял.

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 12 октября 2011

Это может сработать для вас после замены contentsum реальным именем вашей таблицы:

select rpad(main.prefix, 5, 0) as ref, sum(contentsum.value) as total
    from (select distinct trim(trailing '0' from ref) as prefix from contentsum) as main
    join contentsum on contentsum.ref like concat(main.prefix, '%')
    group by main.prefix
;

Однако его итоги не совпадают с вашими. Вместо этого они соответствуют тому, что, как я думал, вы складывали, когда я впервые прочитал вопрос.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...