我正在尝试编写查询以查找班上第二大女学生 DOB是出生日期作为时间戳 名字和性别都是varchar
SELECT min(DOB)
FROM Student
WHERE DOB > (SELECT min(DOB) FROM Student where gender='girl')
这正确吗?
答案 0 :(得分:2)
或更简单:
SELECT DOB
FROM Student
WHERE gender='girl'
GROUP BY DOB
ORDER BY DOB ASC
LIMIT 1,1
按DOB分组意味着选择下一个最低的两个相同的DOB(双胞胎?)。可以在第二个相同的日期(最早的一个)中将其省略。
答案 1 :(得分:0)
以下查询将为您提供所需的输出
WITH T AS
(
SELECT *
DENSE_RANK() OVER (ORDER BY DOB ) AS Rnk
FROM Student
WHERE gender='girl'
)
SELECT min(DOB)
FROM T
WHERE Rnk = 2;
您可以更改RNK值以获取下一个最旧的值,例如,对于第三个最旧的值,您可以使用WHERE Rnk = 3
答案 2 :(得分:0)