我有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