Teradata
SQL MAX 函式
假設我有一個屬性名稱、年齡的表,如下所示:
MyTable (Name, Age)
現在,要獲得最大年齡,我可以編寫以下查詢:
SELECT MAX(Age) AS "Oldest Age" FROM MyTable;
但是,當我只想要年齡最大的人的名字時,我無法弄清楚查詢。我嘗試了以下方法,但它不起作用:
SELECT Name FROM MyTable WHERE MAX(Age);
任何幫助表示讚賞。
我相信 Teradata 支持視窗函式,因此您可以使用它們來選擇較大的值。
select name, age from ( select name, age, dense_rank() over (order by age desc) as rn from MyTable ) t where rn = 1;
如果有多個姓名具有相同的年齡,則會顯示所有姓名。如果您只想選擇一個,請使用
row_number()
而不是dense_rank()
使用視窗函式通常比子選擇更快。
WHERE 子句需要一個條件,如果您鍵入:
SELECT Name FROM MyTable WHERE MAX(Age);
沒有條件。試著把它翻譯成一句話:
從 MyTable 中選擇名稱,其中最大年齡…
現在將其與此語句進行比較:
從 MyTable 中選擇年齡欄位等於的名稱(選擇最大年齡)
現在在 SQL 程式碼中:
SELECT Name FROM MyTable WHERE Age = (SELECT MAX(Age) FROM MyTable);
希望它有所幫助。