You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Isar中实现类似SQL的分组统计订单数并排序?

在Isar中实现按客户ID分组统计订单数量并取Top200

需求回顾

你需要实现类似以下SQL的功能:按客户ID分组统计订单数量,取数量最多的前200条并按数量降序排列:

SELECT TOP (200) Id, COUNT(*) AS Total
FROM   Orders
GROUP BY Id
ORDER BY Total DESC

Isar实现代码

你可以通过Isar的分组、聚合、排序和限制方法完成需求,完整代码如下:

final top200CustomerOrders = await _isarService.isar.orders
    .groupBy((order) => order.customerId) // 按客户ID分组
    .aggregate((group) => group.count()) // 统计每组订单数量
    .sortByCountDesc() // 按订单数量降序排列
    .limit(200) // 取前200条数据
    .findAll();

代码说明

  • groupBy((order) => order.customerId):指定以customerId作为分组字段
  • aggregate((group) => group.count()):对每个分组内的订单进行计数,结果会包含customerId和对应的订单数量count
  • sortByCountDesc():在数据库层面按计数结果降序排序,比内存排序更高效
  • limit(200):限制返回结果数量为200条

内容的提问来源于stack exchange,提问作者Fuxster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:11:16