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

如何实现符合条件的恰好5条记录的secret_number求和,或返回计数?

解决方案

表结构

CREATE TABLE test(
    id INT AUTO_INCREMENT PRIMARY KEY,
    server_id VARCHAR(15) NOT NULL,
    secret_number INT NOT NULL,
    processing_status VARCHAR(15) DEFAULT 'UNPROCESSED',
    ts TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)
);

需求说明

需要查询processing_status = 'UNPROCESSED'且server_id = 'R_SERVER'的记录,按id排序取前5条的secret_number总和,但要求:

  • 要么当符合条件的记录不足5条时返回NULL
  • 要么同时返回记录数和总和,方便Python代码判断是否忽略结果

方案1:不足5条时返回NULL

通过子查询获取前5条记录后,用CASE判断记录数是否为5,满足则返回求和值,否则返回NULL:

SELECT 
    CASE WHEN COUNT(*) = 5 THEN SUM(secret_number) ELSE NULL END AS secret_sum
FROM (
    SELECT secret_number
    FROM test
    WHERE processing_status = 'UNPROCESSED' AND server_id = 'R_SERVER'
    ORDER BY id LIMIT 5
) t1;

方案2:同时返回记录数和总和

直接统计前5条记录的数量与总和,Python代码可通过判断record_count是否等于5,决定是否使用secret_sum:

SELECT 
    COUNT(*) AS record_count,
    SUM(secret_number) AS secret_sum
FROM (
    SELECT secret_number
    FROM test
    WHERE processing_status = 'UNPROCESSED' AND server_id = 'R_SERVER'
    ORDER BY id LIMIT 5
) t1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:35:15