сворачивание данных данных групп - PullRequest
0 голосов
/ 19 июля 2011

В моей базе данных у меня есть список данных

Имя Значение

a/b/c     1
a/b/c/d   1
a/b/c/d/e 1
b/b/c     1
b/b/c/d   2
c/c/d     3
c/c/d/e   4
d/d       5

если я установлю максимальную длину 3, я хочу получить

a/b/c  3
b/b/c  3
c/c/d  7
d/d    5

Как можноЯ делаю это?

CREATE TABLE dataTable (
ID                          BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name                        VARCHAR(255),
Value                       INT
) ENGINE=InnoDB;


INSERT INTO dataTable (Name, Value) VALUES ("a/b/c", 1), ("a/b/c/d", 1), ("a/b/c/d/e", 1), ("b/b/c", 1), ("b/b/c/d", 1), ("c/c/d", 1), ("c/c/d/e", 1),  ("d/d", 1);

Ответы [ 2 ]

2 голосов
/ 19 июля 2011
SELECT LEFT(Name, 5) AS Name, SUM(Value) as TotalValue
    FROM dataTable
    GROUP BY LEFT(Name, 5)

Очевидно, я жестко закодировал 5 в моем примере, но вы могли бы сделать переменную, например (2 * MaxLen-1).

1 голос
/ 20 июля 2011
select name,
sum(value) as cnt
from
dataTable
group by substring_index(name,'/',3) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...