作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个这样的表:
S_id |ca1 |ca2 |exam
1 | 08 | 12 | 35
1 | 02 | 14 | 32
1 | 08 | 12 | 20
2 | 03 | 11 | 55
2 | 09 | 18 | 45
2 | 10 | 12 | 35
3 | 07 | 12 | 35
3 | 04 | 14 | 37
3 | 09 | 15 | 32
4 | 03 | 11 | 55
4 | 09 | 18 | 45
4 | 10 | 12 | 35
5 | 10 | 12 | 35
5 | 07 | 12 | 35
5 | 09 | 18 | 45
我想选择 S_id、total 并根据 sum(ca1+ca2+exam) 为每个学生分配排名,如下所示:
S_id |total|rank
1 | 158 | 5
2 | 198 | 1
3 | 165 | 4
4 | 198 | 1
5 | 183 | 3
如果有相同的总数,比如 S_id
2 和 S_id
4 排名为 1,我希望排名跳到 3。
感谢您的帮助。
最佳答案
制作表格:
sqlite> create table t (S_id, ca1, ca2, exam);
sqlite> insert into t values
...> ( 1 , 08 , 12 , 35 ),
...> ( 1 , 02 , 14 , 32 ),
...> ( 1 , 08 , 12 , 20 ),
...> ( 2 , 03 , 11 , 55 ),
...> ( 2 , 09 , 18 , 45 ),
...> ( 2 , 10 , 12 , 35 ),
...> ( 3 , 07 , 12 , 35 ),
...> ( 3 , 04 , 14 , 37 ),
...> ( 3 , 09 , 15 , 32 ),
...> ( 4 , 03 , 11 , 55 ),
...> ( 4 , 09 , 18 , 45 ),
...> ( 4 , 10 , 12 , 35 ),
...> ( 5 , 10 , 12 , 35 ),
...> ( 5 , 07 , 12 , 35 ),
...> ( 5 , 09 , 18 , 45 );
用总分制作一个临时表:
sqlite> create temp table tt
as select S_id, sum(ca1) + sum(ca2) + sum(exam) as total
from t group by S_id;
使用临时表计算排名:
sqlite> select s.S_id, s.total,
(select count(*)+1 from tt as r where r.total > s.total) as rank
from tt as s;
1|143|5
2|198|1
3|165|4
4|198|1
5|183|3
删除临时表:
sqlite> drop table tt;
附录
随着最近对 SQLite 的更改 (2015-02-09),此公式现在有效:
with tt (S_id, total) as
(select S_id, sum(ca1 + ca2 + exam) as total from t group by S_id)
select s.S_id, s.total,
(select count(*)+1 from tt as r where r.total > s.total) as rank
from tt as s;
关于sql - 如何根据 SQLite 表中的总分检索排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28377210/
好吧,当我运行这段代码时,我得到我的总和等于 0 并且弄乱了我的平均水平和成绩。我不确定我做错了什么total += scores 函数在它应该在的地方,但它仍然没有加起来分数。 int valida
我有一个简单的 jasper 报告,其中只有 USER 和 SCORE 作为列并使用 mysql 和 DB。现在报告工作正常。但后来我想计算总 SCORE 并将其显示在报告的底部。我怎样才能做到这一点
我是 React js 新手。现在我正在编写一个应用程序,用户可以在其中更新团队中每个团队成员的积分。递增和递减工作得很好,我在这里得到了很多帮助。现在我正在尝试显示每支球队的总得分。就像下面的例子一
我是一名优秀的程序员,十分优秀!