我们有一个名为'atable'的以下sqlite3表
id student assignment grade
-----------------------------------
1 A 123 9
2 A 456 9
3 A 234 8
4 B 534 7
5 B 654 9
6 C 322 7
id是唯一的,并且每个记录都会递增。我们通过运行查询
为每个用户获取最新的分配SELECT student, assignment, grade from atable where id in
(select max(id) from atable group by student) order by id desc
这很好用。但是,我们还需要为用户在同一查询中收到特定成绩的每个用户提取分配数量,例如9.
任何想法建议如何增强或重写上述查询以返回计数。如上所述,我们使用的是sqlite3。
由于
答案 0 :(得分:1)
您可以使用此相关查询:
SELECT t.student, t.assignment, t.grade,
(SELECT COUNT(*) FROM atable s
WHERE s.student = t.student and s.grade >= 9) as total_above_9
from atable t
where t.id in
(select max(id) from atable group by student)
order by t.id desc
答案 1 :(得分:0)
最好加入包含原始表的聚合版本的派生表:
select t1.student, t1.assignment, t1.grade, t2.cnt
from mytable as t1
join (
select student, max(id) as id,
count(case when grade = 9 then 1 end) as cnt
from mytable
group by student
) as t2 on t1.id = t2.id
答案 2 :(得分:0)
试试这个;)
select t1.student, t1.assignment, t1.grade, t2.count
from atable t1
inner join (select max(id) as id, count(if(grade=9, 1, null)) as count from atable group by student) t2
on t1.id = t2.id
order by t1.id desc