如何使用sql显示哪些学生仍在学校

如何使用sql显示哪些学生仍在学校,sql,Sql,此表显示了学生进出学校的记录。IN代表入学学生,OUT代表离校学生。我想知道如何显示哪些学生还在上学 我试了这么多,但还是弄不明白,有人能帮我吗,非常感谢 DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL auto_increment, `time` varchar(128) default NULL, `status` varchar(128) default NULL,

此表显示了学生进出学校的记录。IN代表入学学生,OUT代表离校学生。我想知道如何显示哪些学生还在上学


我试了这么多,但还是弄不明白,有人能帮我吗,非常感谢

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(11) NOT NULL auto_increment,
  `time` varchar(128) default NULL,
  `status` varchar(128) default NULL,
  `stu_id` varchar(128) default NULL,
  PRIMARY KEY  (`id`)
) 

INSERT INTO `student` (`id`, `time`, `status`, `stu_id`) VALUES 
    (1,'11AM','IN','1'),
    (2,'11AM','IN','2'),
    (3,'12AM','OUT','1'),
    (4,'12AM','IN','3'),
    (5,'1PM','OUT','3'),
    (6,'2PM','IN','3'),
    (11,'2PM','IN','4');

我想答案是2、3、4。学校的学生人数是入学人数减去毕业人数之和:

select sum(case when status = 'in' then 1
                when status = 'out' then -1
                else 0
           end)
from student;
基本上,要查看在校学生,您需要最后状态为的学生。一种方法使用相关子查询:

select s.stu_id
from student s
where s.time = (select max(s2.time)
                from student s2
                where s2.stu_id = s.stu_id
               ) and
      s.status = 'in';

如果
状态
仅为
输入
输出
您不能这样做吗
SELECT*from student WHERE status=“IN”

以下是考虑自动递增id的查询

select t2.* from  
student t2 
left join (select ROW_NUMBER() OVER(PARTITION by stu_id ORDER BY id desc) as row_num, id from student) t1 on t1.id = t2.id
where t1.row_num = 1 and [status] = 'IN'

非常感谢,但是如果我需要出示还在学校的学生证,我该怎么办