簡體   English   中英

使用SQL從列中找到最大值?

[英]Find the largest value from column using SQL?

我正在使用SQL,其中我的列具有像

A B
X1 2 4 6 8 10
X2 2 33 44 56 78 98 675 891 11111
X3 2 4 672 234 2343 56331
X4 51 123 232 12 12333

我想查詢從具有最大計數值的col A的col B獲取值。 即輸出應該是

x2  2 33 44 56 78 98 675 891 11111

我使用的查詢:

select max(B) from table

結果是

51 123 232 12 12333

假設兩列都是字符串,並且B列使用單個空格作為分隔符,並且不使用前導/尾隨空格,則可以使用以下方法:

SELECT A, B
FROM MyTable
ORDER BY DESC LENGTH(B)-LENGTH(REPLACE(B, ' ', ''))
FETCH FIRST 1 ROW ONLY

此解決方案的核心是LENGTH(B)-LENGTH(REPLACE(B, ' ', ''))表達式,該表達式計算字符串B的空格數。

注意: FETCH FIRST N ROWS ONLY是Oracle-12c語法。 對於早期版本,請使用此答案中描述的ROWNUM方法。

如果存在一個以上的分隔空間或多於一個的分隔線,則請滿足以下條件:使用regexp_count()每一行中的空格數(或空格組regexp_count() 使用rank查找大多數(組)空間。 僅采用排名為1行:

演示

select *
  from (select t.*, rank() over (order by regexp_count(b, ' +') desc) rnk from t)
  where rnk = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM