sqlite,在每个组中选择第二小

时间:2014-10-31 20:11:31

标签: sqlite

我有一个名为英雄的sqlite数据库,我试图为每个使用该服务的人找到第二个最早的日期。要找到我刚才使用的最早的日期:

SELECT MIN(Date), Cust_Num FROM heroes GROUP BY Cust_Num;

现在,我使用以下内容查找第二个最早的日期:

SELECT MAX(Date), Cust_Num FROM heroes WHERE Date IN (SELECT Date FROM heroes ORDER BY Date LIMIT 2) GROUP BY Cust_Num;

然而,它只给了我第一天第二次使用该服务的9个人有数据。有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您改为加入客户编号的子查询,您将确保日期与相应的客户编号相匹配。在你的第二次尝试中,你没有那种确定性。

SELECT h.Cust_Num, MAX(d.Date) 
FROM 
    heroes h 
    JOIN (
        SELECT Cust_Num, Date 
        FROM heroes 
        ORDER BY Date 
        LIMIT 2
    ) d
    ON d.Cust_Num = h.Cust_Num
GROUP BY h.Cust_Num
ORDER BY h.Cust_Num;