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

如何使用SQL min函数子查询查找trip_no数量最少的公司名称

原SQL错误原因
  • 你写的SQL里min()函数的入参是一个返回两列的子查询,语法不合法,min只能对单列数值集合求最小值。
正确查询方案

下面分两种常用实现,均支持返回多个并列最少trip_no数量的公司:

写法1:全数据库版本兼容写法

适用于所有支持标准SQL的数据库,逻辑是先统计每个公司的trip_no数量,再取最小的统计值作为过滤条件:

SELECT 
    t1.Id_comp, 
    company.name,
    COUNT(t1.trip_no) AS trip_count
FROM trip t1
INNER JOIN company ON t1.ID_comp = company.ID_comp
GROUP BY t1.Id_comp, company.name
HAVING COUNT(t1.trip_no) = (
    -- 先求所有公司的trip_no数量的最小值
    SELECT MIN(trip_cnt) 
    FROM (
        SELECT COUNT(t2.trip_no) AS trip_cnt
        FROM trip t2 
        GROUP BY t2.ID_comp
    ) AS company_trip_cnt
)

写法2:窗口函数写法(适配MySQL8.0+/PostgreSQL/SQL Server等新数据库)

用RANK窗口函数排序,写法更简洁,并列最小值的处理逻辑更直观:

WITH company_trip_stat AS (
    SELECT 
        t.Id_comp,
        c.name AS company_name,
        COUNT(t.trip_no) AS trip_count,
        -- 按trip数量升序排序,排名相同的rk值一致
        RANK() OVER(ORDER BY COUNT(t.trip_no) ASC) AS rk
    FROM trip t
    INNER JOIN company c ON t.ID_comp = c.ID_comp
    GROUP BY t.Id_comp, c.name
)
-- 取排名第一的就是trip数量最少的公司
SELECT Id_comp, company_name, trip_count 
FROM company_trip_stat 
WHERE rk = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:09:00