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

按RAM分组求MAX(speed):含NULL则返回NULL的SQL实现问询

SQL分组查询需求与修正

需求

按ram字段分组,返回每组的MAX(speed);若某组的speed值中存在至少一个NULL,则该组对应的结果返回NULL。

原始数据

ramspeed
128600
128600
128750
128750
128800
128900
32400
32NULL
32500
64450
64500
64500

当前错误SQL

SELECT ram, CASE speed WHEN IS NOT NULL THEN MAX(speed) ELSE NULL END
FROM Pc
GROUP BY ram

错误点说明

  • 语法错误:CASE speed WHEN IS NOT NULL写法不符合SQL规范,NULL判断不能采用这种格式
  • 逻辑错误:未检测分组内是否存在NULL值,且speed作为非聚合字段,在GROUP BY仅包含ram的情况下直接使用会引发语法或逻辑问题

正确SQL写法

可以通过对比COUNT(speed)和COUNT(*)判断分组内是否存在NULL(COUNT(speed)会忽略NULL,COUNT(*)统计所有行,两者不等则说明组内有NULL):

SELECT 
    ram,
    CASE 
        WHEN COUNT(speed) = COUNT(*) THEN MAX(speed) 
        ELSE NULL 
    END AS m_speed
FROM Pc
GROUP BY ram

也可以用另一种方式检测NULL的存在:

SELECT 
    ram,
    CASE 
        WHEN MAX(CASE WHEN speed IS NULL THEN 1 ELSE 0 END) = 0 THEN MAX(speed)
        ELSE NULL
    END AS m_speed
FROM Pc
GROUP BY ram

最终结果

ramm_speed
128900
32NULL
64500

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:50:15