- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的表:
CREATE TABLE student_results(id integer, name varchar(32), score float);
让我们做以下两个假设:
所以我想应用以下评分:
Score Grade Awarded
0-10 GRADE9
10-20 GRADE8
20-30 GRADE7
30-40 GRADE6
40-50 GRADE5
50-60 GRADE4
60-70 GRADE3
70-80 GRADE2
80-90 GRADE1
99-100 GENIUS
我想编写一个接受以下输入参数的 SQL 查询:
lowest score: 0 in this example
highest score: 100 in this example
'step' size: 10 in this example
与以往一样,如果可能的话,我想使用 ANSI SQL 编写这样的查询。如果我必须选择一个数据库,那么按照优先级递减的顺序,它必须是:
有人可以使用上表作为示例来解释我如何能够编写执行这种分级的 SQL 查询吗?
[编辑]
Sample input data
1, 'homer', 10.5
2. 'santas little helper', 15.2
3, 'bart', 20.5
4, 'marge', 40.5
5. 'lisa', 100
我将有一个 SQL 函数 grade_rank() - 对学生进行排名:
函数 grade_rank() 的参数是:
1st argument: LOWEST possible score value
2nd argument: HIGHEST possible score value
3rd argument: step size, which determines the levels/divisions between the ranks
select id, name, grade_rank(0,100, 10) grade from student_scores;
输出(基于上面的输入)应该是:
1, homer, GRADE9
2. santas liitle helper GRADE9
3, bart, GRADE8
4, marge, GRADE6
5. lisa, GENIUS
最佳答案
通过这种方式你可以做的更一般但是等级会倒序,从1到N,即
例如使用值第 10 步得分 43
这个算法
SELECT (((score-1)-((score-1) % step))/step)+1
将返回 5
您不必知道最高分。如果最高分是 100 分,则没有人能够执行高于 100 分的成绩,您只需要决定步数的大小即可。例如,如果您想要步长为 25。知道最高分数为 100,将有 4 个等级。因此,通过将步进级别设置为 25 而不是 10,结果将为 2,即等级 2。
SELECT (((43-1)-((43-1) % 25))/25)+1
也许不符合您的预期,但可能足够通用以提供有用的信息。下面是该函数在 SQL 中的样子。
CREATE OR REPLACE FUNCTION grade_rank(IN score integer, IN step integer, OUT rank integer)
AS 'SELECT ((($1-1)-(($1-1) % $2))/$2)+1'
LANGUAGE 'SQL';
现在调用这个函数
select * from grade_rank(43,10)
返回 5。
这是 plpgsql 的等价物:
CREATE OR REPLACE FUNCTION grade_rank(IN score integer, IN step integer)
RETURNS integer AS
$BODY$
DECLARE rank integer;
BEGIN
SELECT (((score-1)-((score-1) % step))/step)+1 INTO rank;
RETURN rank;
END;
$BODY$
LANGUAGE 'plpgsql';
关于sql - 如何在纯(即 ANSI)SQL 中执行 'grading',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3092059/
我是编程新手(C),我要做一个练习,我必须创建一个将欧洲风格等级(1/20 到 20/20)转换为美国风格等级的函数:例如16 至 20 年级的成绩为“A”。我必须将其集成到主程序中,该程序将要求转换
我设法将两个不同的数组地址插入到指针数组中,但是当我打印它时,它只给我第一个数组。而不是他们两个: #include using namespace std; int *readGrades(in
这是我的build.gradle文件: plugins { id 'org.springframework.boot' version '2.3.4.RELEASE' id 'io.s
我有一个 wordpress 网站,用于存储学生在各种类(class)中的成绩(来自网站上的测验)。我正在尝试创建一个查询,该查询将提取特定组(使用 buddypress 组)中所有学生的所有类(cl
拜托,我需要真正的帮助...... 我有一个表格,其中包含学生成绩及其该年级的相关职位 - 像这样: +---------+--------+--------+--------+--------+--
这样做的想法是输入“成绩”或一般数字,检查以确保它是一个数字,将其添加到成绩数组,然后为每个添加的数字创建一个列表项,其中包含一个输入包含输入的数字。 我有两个函数。第一个调用 check(),将输入
void storing(struct student * p, int count) { int i,j; for ( i = 0; i age)); printf
Android Studio 2.3 我正在运行一些仪器测试,在我的 build.gradle 文件中我有以下依赖项: androidTestCompile 'com.android.support.
某公司的薪资方案如下: Salary range for grade A: $700 - $899 Salary range for grade B: $600 - $799 Salary range
我是gradle的新手,从Android的第一步开始。 直到昨天,我才能够编译和测试我的Android App,当我单击“调试'app'”时突然停止编译并出现此错误 Android resource
这是解决方案就在我面前,但我似乎找不到的时候之一!所以请耐心等待我。 kata instruction是以下内容: Complete the function so that it finds the
到目前为止,我可以列出所有学生的论文,但我想只显示已评分的学生论文,我想知道如何才能做到这一点?我还必须向我的 MySQL 代码添加什么? 这是到目前为止我使用 MySQL 代码得到的结果。 SELE
目前我不确定我的程序出了什么问题。我可以获得 A、B、D、F 的正确值;但当成绩在 70 到 80 之间时,它不会返回值 C。 我知道我以一种奇怪的方式绕过了这个程序,这是由于教授设置作业的方式。我能
数学测验询问您想要解决多少个问题,并显示加法和减法的随机数,然后对您对问题的回答进行评分。我遇到的问题是正确打印它。我需要显示我做对了多少个以及我总共尝试了多少个。示例 5 分中的 4 分正确(成绩:
我想使用 Jsoup 从表格中获取主题的Title 和Grade。我已经成功获得了主题的标题,但没有获得成绩。我得到的是成绩加上科目的科目代码,但我只想要成绩。如果你们帮我解决问题,那将非常有帮助。
我有一个看起来像这样的表: CREATE TABLE student_results(id integer, name varchar(32), score float); 让我们做以下两个假设: 假
我有以下实体和数据库上下文类, public class Grade { public int Id { get; set; } public string GradeName { g
我正在尝试将项目更新到 Android Studio 3。 build.gradle 文件中不再接受以下代码段。 applicationVariants.all { variant -> va
我很随意地选择了最新版本的 Python (3.2.2)不幸的是,它缺少我迫切需要的 matplotlib。我已经下载了python 2.7。我的简单问题是天气我必须卸载 python3.2 或者我可
这是我第一次使用 Google 表格,我需要从两个不同的表格中对表格进行排序。我只想保留没有等级 A的ref 这是谷歌表中的链接 https://docs.google.com/spreadsheet
我是一名优秀的程序员,十分优秀!