SQL - 显示最小值

时间:2017-11-15 11:47:38

标签: sql oracle minimum

我是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;

所有这些提供的是经纪人及其分享金额的清单。我只想要最低限度。

请帮忙!我知道这将是一件简单的事情,但我无法弄清楚是什么。

2 个答案:

答案 0 :(得分:3)

这是一种返回所有具有最小共享金额的行的方法:

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匹配的那些行。最后,我们可以将代理表加入此子查询。

答案 1 :(得分: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;