我很抱歉,但标题有点误导。说我有以下表格
-- user_tests 表 姓名 | 类型 ------------------------------------|---- 编号 | 整数(11) 用户 ID | 整数(11) test_schedule_id | 整数(11) device_user_test_id | varchar(255) time_take | 整数(11) 总分 | 整数(11) 总问题 | 整数(11) 尝试计数 | 整数(11) created_at | 约会时间 更新时间 | 约会时间
-- user_test_questions 表 姓名 | 类型 ------------|------------- 编号 | 整数 user_test_id | 整数 time_take | 整数 获得标记 | 整数 问题ID | 整数 是正确的| 枚举 test_section_id | 整数 created_at | 约会时间 更新时间 | 约会时间
表中的数据user_tests
是参加了由 标识的特定考试的学生列表test_schedule_id
。每一个test_schedule_id
,都有一个或多个test_section_id
。
我正在尝试根据以下条件计算学生的排名:
- 根据学生的总成绩获得排名
test_schedule_id
- 如果前一个案例的排名相同,则获得排名
test_section_id
= 1 - 如果前一个案例的排名相同,则获得排名
test_section_id
= 2 - 如果前一个案例的排名相同,则获得排名
test_section_id
= 3 - 如果前一个案例的排名相同,则获取用户表中用户出生日期的排名
我可以在 Rails(或任何框架)中轻松完成它们,但我想避免它并在 SQL 中使用 aView
或 a来解决它Stored Procedure
。
现在我知道如何单独计算排名,但我正在努力结合这些条件。有没有办法做到这一点?我想我只是缺少 MS SQL Server Rank() 函数!
谢谢
编辑:排名基于表中的total_marks
任何一个。user_tests
SUM(marks_obtained)
user_test_questions