繁体   English   中英

选择每个组中的最后一条记录以及计数

[英]select the last record in each group along with count

我们有一个名为“ 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。

谢谢

您可以使用以下相关查询:

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

最好加入包含原始表的聚合版本的派生表:

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

尝试这个;)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM