oracle 如何在一列没有重复值的情况下选择两列的不同值

nhjlsmyf  于 2023-03-17  发布在  Oracle
关注(0)|答案(2)|浏览(100)

我有一个学生余额表,其中学生ID不重复,但余额重复。我只想选择每个余额中的一个作为具有其学生ID的样本。这是我的表的屏幕截图。enter image description here
我的数据库在oracle 19c中。我想显示不同的余额作为每个示例的样本。1,10,20,50沿着他们的学生ID,可以是任何ID。如下所示。enter image description here

juzqafwq

juzqafwq1#

由于学生ID可以是 any,因此使用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>
sqserrrh

sqserrrh2#

你必须决定你想如何选择平衡。应该是最小值?最大值?还是其他什么?
如果你只是想要一个样品,应该不会有太大的区别。
然后对学生ID执行group by操作,这应该会给予您要查找的结果集。

相关问题