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

如何为TABLE1添加按学生分组的最小日期列WANT?

实现每个学生对应最小日期的列填充

需求说明

现有TABLE1表结构及数据如下:

TABLE1
STUDENT SUBJECT DATE    WANT
1   HISTORY 1/1/2020    11/3/2019
1   HISTORY 11/3/2019   11/3/2019
1   HISTORY 12/1/2021   11/3/2019
2   HISTORY 3/4/2019    3/4/2019
2   HISTORY 2/6/2021    3/4/2019
3   HISTORY 1/8/2022    1/8/2022

需要为每条记录新增WANT列,值为对应STUDENT的最小DATE值。

解决方案

方法1:关联分组查询结果(JOIN方式)

将你已写出的分组查询作为子查询,通过STUDENT字段与原表关联,即可把最小日期匹配到每一行记录:

SELECT 
    t1.STUDENT,
    t1.SUBJECT,
    t1.DATE,
    t2.MIN_DATE AS WANT
FROM TABLE1 t1
JOIN (
    SELECT STUDENT, MIN(DATE) AS MIN_DATE
    FROM TABLE1
    GROUP BY STUDENT
) t2 ON t1.STUDENT = t2.STUDENT;

方法2:窗口函数(简洁高效)

使用MIN() OVER()窗口函数,直接按STUDENT分组计算最小日期,无需额外关联操作,适合大多数现代数据库(如MySQL 8.0+、PostgreSQL、SQL Server等):

SELECT 
    STUDENT,
    SUBJECT,
    DATE,
    MIN(DATE) OVER(PARTITION BY STUDENT) AS WANT
FROM TABLE1;

方法3:关联子查询

在SELECT子句中直接通过子查询获取当前行对应学生的最小日期:

SELECT 
    STUDENT,
    SUBJECT,
    DATE,
    (SELECT MIN(DATE) FROM TABLE1 WHERE STUDENT = t1.STUDENT) AS WANT
FROM TABLE1 t1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:35:30