我有一个学生余额表,其中学生 ID 不重复,但余额重复。我只想选择每个余额中的一个作为带有学生 ID 的样本。这是我桌子的屏幕截图。
我的数据库在 oracle 19c 中。 我想显示不同的余额作为每个示例的示例。 1,10,20,50 以及他们的学生 ID,可以是任何 ID。如下图
因为学号可以是任何,那么使用例如
min
聚合函数。
样本数据:
SQL> with student (stid, balance) as
2 (select 101, 10 from dual union all
3 select 102, 20 from dual union all
4 select 103, 5 from dual union all
5 select 104, 50 from dual union all
6 select 105, 5 from dual union all
7 select 106, 5 from dual union all
8 select 107, 10 from dual union all
9 select 108, 10 from dual union all
10 select 120, 1 from dual union all
11 select 121, 50 from dual union all
12 select 121, 10 from dual
13 )
查询:
14 select min(stid) stid, balance
15 from student
16 group by balance
17 order by balance;
STID BALANCE
---------- ----------
120 1
103 5
101 10
102 20
104 50
SQL>
你必须决定你想如何平衡。它应该是最低限度的吗?最大限度?还有别的吗?
如果你想要的只是一个样本,那应该不会有太大的不同。
然后根据学生 ID 进行分组,这应该会给你你正在寻找的结果集。