当我使用count
或sum
方法时,我得到了错误的结果。
例如:
Member::groupBy('id')->count()
在另一种方法中,我只得到结果1
Member::count()
我得到了正确的结果。
当使用sum
方法时,我得到了错误的结果。
https://github.com/laravel/framework/issues/14123
忘了说,我的laravel版本信息:
Laravel Framework version 5.1.40 (LTS)
项目中的实际问题
我有一张充电记录表。
1.pay日志表
CREATE TABLE pay_logs (
id int(11) NOT NULL AUTO_INCREMENT,
amount decimal(20,2) DEFAULT '0.00',
pay_sn varchar(20) DEFAULT NULL,
join_date int(11) unsigned DEFAULT '0',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.1支付日志talbe数据
INSERT INTO pay_logs (id, amount, pay_sn, join_date)
VALUES
(1,10.00,'aabbcc',1466753291),
(2,10.00,'aabbcc',1466753292),
(3,20.00,'bbccdd',1466753292),
(4,30.00,'ccddee',1466753292);
2.说明
在pay_log表中,1和2记录相同。所以当我想按实际充值成功时间过滤结果时,我只需要一条记录,所以我使用groupBy操作。
我的错误操作
DB::table('pay_log')
->whereBetween('joinDate',[$beginToday,$endToday])
->where('isSucceed','=',1)
->where('type','=',1)
->groupBy('pay_sn');
->count();
最后,解决它。
$query = DB::table('pay_log')
->select(DB::raw('count(*) as num'))
->whereBetween('joinDate',[$beginToday,$endToday])
->where('isSucceed','=',1)
->where('type','=',1)
->groupBy('pay_sn');
ps:如果使用雄辩的ORM
修改-
测试示例(放弃)
>
CREATE TABLE members(id int(11)NOT NULL AUTO_INCREMENT,name varchar(15)DEFAULT NULL,amount decimal(20,2)DEFAULT'0.00',PRIMARY KEY(id))ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
测试数据
在hc_成员(id、名称、金额)中插入值(1,'aaa',10.00),(2,'bbb',10.00),(3,'ccc',10.00)
测试结果
我希望,当我使用方法
Member::groupBy('name')时-
我想要结果3
实际上它返回1。
当我使用方法Member::groupBy('name')时-
我要30点的结果
实际上它返回10.00
谢谢你的回答,帮我解决了这个问题!
这不是laravel的问题,因为Member::groupBy('id'))-
尝试运行此查询
SELECT COUNT(*) AS aggregate FROM members GROUP BY 'id'
它将返回每个(id)聚合的行数计数。这是在调用
Member::groupBy('id')时执行的查询-
如果您需要不同ID的计数,可以调用
Member::distinct('id')->count('id')
这与sum查询也返回10的原因相同。查询返回具有相同“名称”的组的“金额”之和。
要获得所有金额的总和,只需调用,
Member::sum('amount');
我必须根据以下col1、col2和loc的数据进行分组,并计算col3中的项数。此外,还应考虑开始和结束日期,即日期应在2021 1月1日至2021 1月31日之间。最终结果应显示在col4中。 数据 预期输出
我想通过聊天Id获得用户和组之间的聊天次数。但查询没有给出聊天次数。它是空白的。我在堆栈溢出(Laravel Elount groupBy()和count,Laravel get count of results Basin groupBy)中也看到过类似的问题,并使用了那些标记为正确但仍然没有得到所需结果的查询。 我使用以下查询: 我的表格结构如下: 结果是这样的: )
我想使用Laravel Eloquent完成任务。我在网上搜索过,没有找到任何有说服力的东西。有些人将groupBy()查询与查询生成器一起使用,如以下链接 但是我想创建这样的查询风格: 此代码仅返回第一个的计数。但是我要计算所有的。
问题内容: 使用样本数据: df 我试图弄清楚如何按key1分组数据并仅对key2等于“ one”的data1值求和。 这是我尝试过的 但这给了我一个数值为“无”的数据框 这里有什么想法吗?我正在寻找与以下SQL等效的Pandas: 提前致谢 问题答案: 首先按key1列分组: 然后为每个组取subDataFrame,其中key2等于“ one”并求和data1列: 为了解释发生了什么,让我们看一
本文向大家介绍pandas数据分组groupby()和统计函数agg()的使用,包括了pandas数据分组groupby()和统计函数agg()的使用的使用技巧和注意事项,需要的朋友参考一下 数据分组 使用 groupby() 方法进行分组 group.size()查看分组后每组的数量 group.groups 查看分组情况 group.get_group('名字') 根据分组后的名字选择分组数据
问题内容: 例如,我有下表: 分组后: 我需要的是删除每个组中的行,其中列中的数量小于组中column的所有行中的最大值。好吧,我在将这个问题翻译和表达为英语时遇到了问题,因此这里是示例: 组中列中的行的最大值: 8 所以我想删除带有索引的行,并保留带有索引的行, 组中列中的行的最大值: 5 所以我想删除带有索引的行并保留带有索引的行 我尝试使用熊猫过滤器功能,但是问题是它一次在组中的所有行上运行