我有2列。 CustNo和CustBal在不使用max的情况下选择最高值?
试图编写脚本以选择具有最高余额的CustNo。我尝试使用max,如果我只使用CustBal列,但可以使用它,但在这种情况下不能使用。我认为它可能是CUSTBAL之后的某个WHERE项目?
SELECT CUSTNO, CUSTBAL
FROM CUSTOMER
WHERE CUSTBAL
我有2列。 CustNo和CustBal在不使用max的情况下选择最高值?
试图编写脚本以选择具有最高余额的CustNo。我尝试使用max,如果我只使用CustBal列,但可以使用它,但在这种情况下不能使用。我认为它可能是CUSTBAL之后的某个WHERE项目?
SELECT CUSTNO, CUSTBAL
FROM CUSTOMER
WHERE CUSTBAL
为什么不使用MAX?
您需要单独计算MAX,因为只能在查询结束时执行该操作(在SELECT子句中使用聚合函数MAX),并且不能在单个查询中混合单个行和聚合。所以你必须在子查询中计算MAX。
select custno, custbal
from customer
where custbal = (select max(custbal) from customer)
;
谢谢!那样做了!我从一开始就滥用max。 –
说实话,你可以在同一个查询中混合单独的行和ANALYTIC函数,但在这种情况下,你仍然需要一个“外部”查询来选择你所需要的行。在你学习的时候,分析功能还需要几个月的时间(可能)。请将其提交以备将来参考! – mathguy
或者:
select * from
(select custno, custbal from customer order by custbal desc)
where rownum = 1
..如果你有12C:
select custno, custbal from customer
order by custbal desc
fetch next 1 rows only
但是这些只会返回即使有多个客户提供相同的最高平衡一行。如果你想与最高custbal,那么所有记录:
select custno, custbal from
(select *, dense_rank() over (order by custbal desc) as rank from customer)
where rank = 1
喜尼基,
您也可以使用简单的GROUP BY功能,
SELECT CUSTNO, MAX(CUSTBAL)
FROM CUSTOMER
GROUP BY CUSTNO
ORDER BY CUSTNO
GROUP BY - 为您提供了最大CUSTBAL的尊重CUSTNO
ORDER BY - 按照CUSTNO列的升序显示结果
我越来越近了。现在我有最高的余额,但不包括CustNo SELECT CUSTNO,CUSTBAL FROM CUSTOMER; SELECT MAX(CustBal)FROM CUSTOMER –
添加样本数据和预期结果 –
术语:您正在尝试编写查询。不是你写的所有东西都是一个“剧本”。 – mathguy