mysql sum取决于单元格内容的一部分

时间:2011-10-11 22:06:18

标签: mysql regex sum

我有这张桌子:

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查询向你们展示。

使用正则表达式,也许?我读过它,但不完全明白。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

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