【问题标题】:Return Only Max Value With Distinct仅返回具有不同的最大值
【发布时间】:2021-12-28 06:21:11
【问题描述】:

我在数据库表中的数据如下:

表格数据

1002    1
1002    0

所以预期的输出是这些:

条件1

1002    1
1002    0

预期输出

1002    1

条件2

1002    1
1002    1

预期输出

1002    1

条件3

1002    0
1002    0

预期输出

1002    0

所以尝试了以下每次只返回 1:

SELECT DISTINCT M.ID, (SELECT MAX(K.VAL) FROM Table k WHERE K.ID = M.ID) VAL FROM Table m WHERE M.VAL = '1002';

在同一张表中进行联接,但没有得到太多帮助。任何带有一个班轮查询的简单建议都将不胜感激。

【问题讨论】:

    标签: sql oracle oracle10g


    【解决方案1】:

    你也可以对你希望max降序的列进行排序,提取第一条记录

    SELECT id,val
    FROM
    (
        SELECT ROW_NUMBER() OVER (PARTITION BY id ORDER BY val desc) AS seq,
        id,val
        FROM table_name
    )tb
    WHERE seq = 1;
    

    【讨论】:

      【解决方案2】:

      使用MAXGROUP BY

      SELECT id,
             MAX(val) AS val
      FROM   table_name
      WHERE  id = 1002
      GROUP BY id
      

      db小提琴here

      【讨论】:

      • @user8512043 是的......但是您需要解释您要实现的目标,因为我们不明白您为什么想要/需要将其用作子查询。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多