MySQL 总和取决于单元格内容的一部分



我有这个表:

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查询给你们看。

使用正则表达式,也许?我读过这方面的书,但不完全理解。

如有任何帮助,不胜感激

在用表的真实名称替换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值都是唯一的,则不是严格必要的。

最新更新