【问题标题】:Getting the Highest value from a table从表中获取最高值
【发布时间】:2015-12-26 02:05:51
【问题描述】:

我试图只显示第一行,在 MYSQL 中的示例是:

ORDER BY foo DESC LIMIT 1; 

我相信 oracle 不使用LIMIT 子句。我试过ROWNUM = 1,但它似乎不起作用。这是显示第一行的正确方式吗?

select customer_name, 
       MAX(balance) as "Highest Depositor Value"
  from depositor
 inner join account
    on depositor.account_number = account.account_number
 group by customer_name, balance
 order by balance
 where rownum = 1;


ERROR at line 4:
ORA-00933: SQL command not properly ended

我得到了答案!谢谢

select customer_name,max(balance) as "Highest Depositor Value"
 from depositor
 inner join account
    on depositor.account_number = account.account_number
 group by customer_name, balance order by balance desc
 fetch first 1 rows only;


CUSTOMER_NAME   Highest Depositor Value
 --------------- -----------------------
 Lindsay                          100000

【问题讨论】:

    标签: sql oracle max sql-limit


    【解决方案1】:

    我在这里找到了很好解释的答案。

    How do I limit the number of rows returned by an Oracle query after ordering?

      select customer_name,max(balance) as "Highest Depositor Value"
    2  from depositor
    3  inner join account on depositor.account_number = account.account_number
    4  group by customer_name, balance order by balance desc
    5  fetch first 1 rows only;
    CUSTOMER_NAME   Highest Depositor Value
     --------------- -----------------------
     Lindsay                          100000
    

    【讨论】:

      【解决方案2】:

      删除这部分:

      order by balance where rownum = 1

      你所拥有的应该可以工作..

      MAX 会给你最大的......你不需要告诉它有多少行,MAX 只会给出 1 个最大值。

      [编辑] 如果您只想要 1 个最大值,则需要按 .. 删除组/订单,并从选择中删除“客户名称”:

        select MAX(balance) as "Highest Depositor Value"
        from depositor
        inner join account on depositor.account_number = account.account_number;
      

      [/编辑]

      【讨论】:

      • 我试过了,最终选择了 11 行。这就是为什么我想订购它们并显示第一行。
      • 哦,是的,抱歉 .. 11 行,每组 1 行 .. 您根据客户名称、余额进行分组 .. 也许您不想分组?你只是 1 最大值?删除 GROUP by 和 ORDER by ..
      • 我将提供一些背景知识。 customer_name 来自存款人表。每个 customer_name 可以有多个帐户。我使用 group 将它们组合在一起并获得帐户的总价值。我可以得到这样的好结果。问题是我只想要分组客户的最大值。也许分组不是增加值的方法,但这是我进行的方式,我可以看到最高值,但我不能只显示那个值。
      • 在原始问题中发布此信息.. 包括示例数据和预期结果。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多