【问题标题】:SQL - Display Minimum ValueSQL - 显示最小值
【发布时间】:2018-04-28 15:08:29
【问题描述】:

我是 SQL Oracle 的新手,并且已经为此工作了将近 10 个小时。我正在尝试显示具有最低份额的记录。这是我的代码:

SELECT b.first_name||' '||b.last_name AS broker,
       MIN(t.share_amount)
FROM brokers b RIGHT OUTER JOIN
     trades t
     ON b.broker_id = t.broker_id
GROUP BY b.first_name||' '||b.last_name;

所有这些都提供了经纪人及其股份数量的列表。我只想要最低限度。

请帮忙!我知道这会很简单,但我不知道是什么。

【问题讨论】:

  • 编辑您的问题并提供示例数据和所需的结果。
  • SELECT MIN(share_amount) FROM trades 然后..
  • 每个经纪商的最低限额还是所有经纪商的最低限额?
  • 需要显示 1 个经纪人最少。

标签: sql oracle minimum


【解决方案1】:

这是一种返回所有具有最小份额数量的行的方法:

SELECT b.first_name||' '||b.last_name AS broker,
       t.share_amount
FROM   brokers b 
       right outer JOIN (SELECT *
                         FROM   (select broker_id,
                                        share_amount,
                                        min(share_amount) over () min_share_amount
                                 from   trades)
                         WHERE  share_amount = min_share_amount) t
         ON b.broker_id = t.broker_id;

这使用 MIN() 分析函数返回整个交易表中的最小 share_amount。然后我们可以过滤结果,只带回那些 share_amount 与 min_share_amount 匹配的行。最后,我们可以将 brokers 表加入到这个子查询中。

【讨论】:

  • 谢谢你,这工作得很好。正是我需要的。再次感谢您。
【解决方案2】:

你的代码应该是这样的

SELECT b.first_name||' '||b.last_name AS broker,
       MIN(t.share_amount)
FROM brokers b RIGHT OUTER JOIN
     trades t
     ON b.broker_id = t.broker_id
GROUP BY b.first_name||' '||b.last_name, t.share_amount;

【讨论】:

  • 这没有意义
  • 感谢您的回复,我正在尝试只显示最少的经纪人,而不是每个经纪人的列表。
猜你喜欢
  • 2016-10-28
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2012-01-19
相关资源
最近更新 更多