sql-server - 如何正确分区表?
问题描述
任务:我需要根据 Time_Frame 列获取 EARLIEST 记录行。
问题:很多学生有多个记录(学生可以在不同的学校注册)
表格格式:Student_ID、Time_Frame 加上随机的个人信息列。
数据示例:不确定如何在此处加载 .xls,但是,我仅在 .pgn 上上传了一名学生的数据,我需要一个查询,该查询将根据 time_frame 列返回黄色行,因为这将是最早的注册对于这个人。我尝试了下面的代码,但它不起作用。
SELECT *
FROM (
SELECT
t.*,
ROW_NUMBER() OVER(
PARTITION BY TIME_FRAME, STUDENT_ID
ORDER BY STUDENT_ID DESC
) rn
from #test t
) t
WHERE rn = 1
and STUDENT_ID = '00000001A'
解决方案
如果您只想按 time_frame 查找特定学生的最早记录,则需要按 time_frame 排序:
SELECT *
FROM (
SELECT
t.*,
ROW_NUMBER() OVER(ORDER BY TIME_FRAME ASC) rn
from #test t
WHERE STUDENT_ID = '00000001A'
) t
WHERE rn = 1
如果要查找每个学生的最早记录,则必须按 Student_ID 进行分区:
SELECT *
FROM (
SELECT
t.*,
ROW_NUMBER() OVER(
PARTITION BY STUDENT_ID
ORDER BY TIME_FRAME ASC
) rn
from #test t
) t
WHERE rn = 1
推荐阅读
- entity-framework - Entity Framework 6:将复杂类型映射到多列
- postgresql - 为什么向索引添加排好序的列不能提高效率?
- google-sheets - 如果在谷歌表格中修改了值,则更改单元格颜色
- sql - 将日期转换为工作日,然后将其关联并求和
- html - 如何删除我的html页面两边的白边
- dialogflow-es - 处理“取消插槽填充对话框”
- azure - 如何将 Azure 分析服务模型推送到 azure devops git repo?
- vba - 搜索文本,在多个单元格中应用背景颜色
- sql - 如何根据不同列的全文搜索计算加权分数并在postgresql中求和?
- gitlab - 在 Gitlab CI 中读取 webhook 有效负载