选择列中没有空值的最后一个值



我有一个SQL SELECT语句情况如下:

我想选择并获取带有 Test2 标记Aquila's行,该标记30为标记列下的最后一个值,并省略空行。换句话说,我想按 Test# 对学生进行分组,并选择不为 null 的最新测试分数。数据应按测试# DESC 顺序排序。

我如何实现这一点?请帮忙。

我的表如下所示:

+------------+-------------+
ID| Test# | Student | Mark |
+------------+-------------+
1 | Test1 | Aquila  | 20   |
2 | Test1 | Peter   | 30   |
3 | Test1 | Jack    | 40   |
4 | Test2 | Aquila  | 30   |
5 | Test2 | PETER   | 40   |
6 | Test2 | Jack    | 50   |
7 | Test3 | Aquila  | NULL |
8 | Test3 | Peter   | 50   |
9 | Test3 | Jack    | 60   |
+------------+-------------+

我希望输出为:

+------------+-------------+
ID| Test# | Student | Mark |
+------------+-------------+
4 | Test2 | Aquila  | 30   |
8 | Test3 | Peter   | 50   |
9 | Test3 | Jack    | 60   |
+------------+-------------+
Select * from Students
where Mark is not NULL 
order by Mark desc

desc order by假定知道数据

我终于自己制定了如下选择语句,它奏效了。如果有人有类似的问题,这里是工作代码。

SELECT * FROM table 
WHERE ID IN (
SELECT MAX(ID) 
FROM table WHERE mark IS NOT NULL
GROUP BY Test# DESC);

相关内容

  • 没有找到相关文章

最新更新