[英]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.