首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL查询验证-简单

SQL查询验证-简单
EN

Stack Overflow用户
提问于 2018-12-07 12:30:56
回答 3查看 74关注 0票数 1

我正在写一个查询,想找出班上年龄第二大的女学生,道布是生日,因为时间戳、姓名和性别都是可变的。

代码语言:javascript
运行
复制
SELECT min(DOB)
FROM Student
WHERE DOB > (SELECT min(DOB) FROM Student where gender='girl')

这是正确的吗?

EN

回答 3

Stack Overflow用户

发布于 2018-12-07 12:36:43

或者更简单:

代码语言:javascript
运行
复制
SELECT DOB
FROM Student
WHERE gender='girl'
GROUP BY DOB
ORDER BY DOB ASC
LIMIT 1,1

道布的分组是指两个完全相同的DOB (双胞胎?)下一个最低的值是select。它可以在第二个相同的日期中省略,作为第二个最旧的日期。

票数 2
EN

Stack Overflow用户

发布于 2018-12-07 12:48:35

以下查询将为您提供所需的输出

代码语言:javascript
运行
复制
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

票数 0
EN

Stack Overflow用户

发布于 2018-12-07 12:50:32

代码语言:javascript
运行
复制
    WITH myTableWithRows AS (
    SELECT (ROW_NUMBER() OVER (ORDER BY   Student.DOB)) as row,*
    FROM Student )
    SELECT * FROM myTableWithRows WHERE  row = 2

我创建了这个假示例,查询结果如下:

或者,您也可以使用以下查询:

代码语言:javascript
运行
复制
 Select top 1 * from (select top 2 from    Student order by dob desc) order by dob desc     
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53663286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档