1***@qq.com
1***@qq.com
  • 发布:2022-05-04 19:18
  • 更新:2024-01-18 13:51
  • 阅读:358

关于数据库 求和 的问题

分类:uniCloud

要对数据库里 一个字段进行,求和,为啥出来的结果是这样的?


这个字段的总和,到底要怎么求?

2022-05-04 19:18 负责人:无 分享
已邀请:
非专业键盘侠

非专业键盘侠

你这写法不对吧,getCount是满足当前条件的记录的条数,和字段求和没关系
field里面的sum是对当前记录的操作吧,不是对整个表的操作
你看这样写可行:
商品分为两个类,要对两个类的总库存做求和,如下

db.collection('goods-spu')  
    .groupBy('type')  
    .groupField('sum(stock) as total_stock')  
    .get()

查询结果:

[  
    {  
        "total_stock": 199,  
        "type": 2  
    },  
    {  
        "total_stock": 0,  
        "type": 1  
    }  
]  
  • 1***@qq.com (作者)

    你好,如果我不分类,要对全部商品求一个总和,要怎么写

    2022-05-05 10:47

  • 非专业键盘侠

    回复 1***@qq.com: 我看了下jql的语法,统计那块儿的文档,求和、平均值什么的都是要分组的,所以我也不知道怎么优雅的写出来。先用本办法吧,把所有记录的要统计的列取出来,循环求和

    2022-05-05 12:14

  • DCloud_uniCloud_WYQ

    回复 1***@qq.com: 如果你的商品数量很多的情况下,这样可能求不出来。如果非要这么做,可以依然使用分组求和,但是这个分组依据可以是需要求和的记录都满足的依据

    2022-05-05 13:49

2***@qq.com

2***@qq.com - 不错哟

db.collection(putaway, customer, users, product).where(this.where).field('record_value').groupBy(  
                        'record_type')  
                    .groupField('sum(record_value) as total_value').get().then(res => {  
                        console.log(res.result.data);  
                    })

可以这样 field('record_value') 填入需要求和的字段,但是不要填groupBy()中的字段
groupBy('record_type')随便一个字段 它在计算时就会分组不成功 就只能求和了

要回复问题请先登录注册