我是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;
所有这些提供的是经纪人及其分享金额的清单。我只想要最低限度。
请帮忙!我知道这将是一件简单的事情,但我无法弄清楚是什么。
答案 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;