mysql分组统计

新手上路,请多包涵

现在两个表:user,user_lower
user_lower主要记录上下级关系的
u_id用户ID,lowerid下级ID
用户关系,请看图。
现在需要进行分组求A,B,C用户下的money字段的总和

create table user
(
    id              int auto_increment  primary key,
    username        varchar(32) collate utf8_unicode_ci       not null,
    password        char(32) collate utf8_unicode_ci          not null,
    parentid        int                                       null, comment '上级ID,最上级为0',
    money          decimal(11,4)      default 0                 null, comment '金额',
    constraint name
        unique (username)
)


create table user_lower
(
    u_id    int not null,
    lowerid int not null,
    primary key (u_id, lowerid)
)

image.png

阅读 2.5k
3 个回答
新手上路,请多包涵

这种求和的方式一般都会在程序里面采用递归的方式进行计算,在MySql里面计算的话太消耗性能了。

把这些数据都从数据库读取出来,建立一个树,然后计算各个树节点的分值就可以了。从最下面的节点开始倒算

处理层次树形数据,最好加入一个冗余字段,值为第一层节点的id,假设这个字段为topUserId,然后你group by topUserId就可以直接统计出聚合值。topUserId在写入parent时同时写入,其值等于parent的topUserId,如果parent==null,则等于自己的id。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏