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

如何使用SQL查询配送单量最高的3名骑手姓名及对应单量

问题原因

  • JOIN语句缺少关联条件,没有将子查询统计的骑手ID和用户表的用户ID做匹配,导致子查询的统计结果和用户表生成笛卡尔积,所有用户都会匹配到全部配送量统计数据
  • 多余的MAX()聚合和用户姓名字段分组逻辑,导致所有用户行都返回了全表最大配送量,和骑手本人的实际配送数据无关联
  • 没有按配送量排序、取前3的过滤逻辑,无法筛选出配送单量最高的3名骑手

修正后的代码(以MySQL/PostgreSQL为例)

SELECT 
    u.first_name, 
    u.last_name, 
    alias.d AS deliveries
FROM (
    SELECT 
        o.rider_id, 
        COUNT(o.rider_id) d
    FROM orders o
    GROUP BY o.rider_id
) AS alias
-- 这里默认users表主键为id,可根据实际表结构调整关联字段
JOIN users u ON alias.rider_id = u.id
-- 按配送量从高到低排序
ORDER BY alias.d DESC
-- 取前3名
LIMIT 3;

其他数据库适配说明

  • 如果使用SQL Server数据库,去掉语句末尾的LIMIT 3,将开头的SELECT修改为SELECT TOP 3即可
  • 如果使用Oracle数据库,在语句末尾追加FETCH FIRST 3 ROWS ONLY即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:45:08