开发者

collapsing data given groups

开发者 https://www.devze.com 2023-03-21 05:27 出处:网络
In my database I have a list of data NameValue a/b/c1 a/b/c/d1 a/b/c/d/e 1 b/b/c1 b/b/c/d2 c/c/d3 c/c/d/e4 d/d5

In my database I have a list of data

Name Value

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

if I set max length 3 I want to get

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

How can I do this?

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);


SELECT LEFT(Name, 5) AS Name, SUM(Value) as TotalValue
    FROM dataTable
    GROUP BY LEFT(Name, 5)

Obviously, I hard-coded the 5 in my example, but you could do a variable like (2*MaxLen-1).


select name,
sum(value) as cnt
from
dataTable
group by substring_index(name,'/',3) 
0

精彩评论

暂无评论...
验证码 换一张
取 消