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

如何在SQLite中为每个item添加对应max和min值的额外列?

解决SQLite中按分组添加min/max列的问题

你之前的查询语句无法得到期望结果,主要有两个问题:

  1. 未指定分组逻辑却直接使用聚合函数MAX()/MIN(),SQLite会将全表作为一个分组返回单行汇总结果,而非保留原表的每一行数据。
  2. 字段名写错:min(val)中的val应为表中实际存在的value字段。

针对你的需求,这里提供两种在SQLite中可行的实现方式:

方法一:使用窗口函数(推荐,SQLite 3.25及以上版本支持)

窗口函数可以在不压缩原表行数的前提下,按指定分组计算聚合值,语法简洁高效:

SELECT 
    item, 
    value,
    MIN(value) OVER (PARTITION BY item) AS min_val,
    MAX(value) OVER (PARTITION BY item) AS max_val
FROM ask;

其中PARTITION BY item表示按item字段分组,对每个分组单独计算value的最小值和最大值,并将结果匹配到原表的每一行。

方法二:使用关联子查询(兼容旧版本SQLite)

如果你的SQLite版本不支持窗口函数,可以通过关联子查询实现,对每一行数据单独查询对应item的聚合值:

SELECT 
    a.item, 
    a.value,
    (SELECT MIN(value) FROM ask WHERE item = a.item) AS min_val,
    (SELECT MAX(value) FROM ask WHERE item = a.item) AS max_val
FROM ask a;

这里通过别名a引用主表的每一行,子查询根据item匹配对应的分组,返回该分组的min和max值。

以上两种方法都能得到你期望的结果:

itemvaluemin_valmax_val
A114
A414
A314
B001
B101
C224
C424

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:09:22