SQL:如何确定DB列中最频繁的数据长度?
需要分析DB列中的值的长度,并获取相同长度值数量的百分比 期望结果:SQL:如何确定DB列中最频繁的数据长度?,sql,statistics,db2,Sql,Statistics,Db2,需要分析DB列中的值的长度,并获取相同长度值数量的百分比 期望结果: Same length values in COL1 = 70% with LENGTH = 10 chars 它不是“查找最频繁的值并计算其长度”,因为如果我们有一个基数较高的键或ID列,所有值都会不同 需要一些快速工作的SQL(首选DB2方言)-不要使DB引擎过载(数十亿行) 示例1 COL1 (VARCHAR 10) ------------------
Same length values in COL1 = 70% with LENGTH = 10 chars
它不是“查找最频繁的值并计算其长度”,因为如果我们有一个基数较高的键或ID列,所有值都会不同
需要一些快速工作的SQL(首选DB2方言)-不要使DB引擎过载(数十亿行)
示例1
COL1 (VARCHAR 10)
------------------
X01
X02
X03
X04
X05
结果:
100%, 3
20%, 5
(or 20%, 13 - does not matter because values are different)
示例2
COL1(VARCHAR 20)
-------------------------
New York
London
Los Angeles
Paris
San Francisco
结果:
100%, 3
20%, 5
(or 20%, 13 - does not matter because values are different)
试试这个:
select concat(cast(rnk1 as float)/cast (totalcol1 as float)*100,'%'), col1length
from (
select *
, row_number () over (partition by col1length order by col1length) rnk1
from (
select length(col1) as col1length
,(select count(col1) from test) as totalcol1
from test)t1
order by rnk1 desc
FETCH FIRST 1 ROWS ONLY)t2
测试结果:
对任意数量的列使用
groupby GROUPING set
运算符的单个SELECT语句。下面的示例假定这些常数是相应长度(varchar_col)的结果
向我们显示数据库模式、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。你有多少列?动态?@GenWan为了简单起见-让我们做一栏检查,谢谢!我会的try@gmlvsv“订购方式”也会影响性能。您可以将其替换为max()。谢谢,但它只计算最频繁值长度的长度。第1列和第2列不是我所需要的,而是具有最频繁长度的行的长度。第三列是具有相应长度的多个记录。最后一列是这样长度的行的百分比。我已经根据您的示例用字符串重写了查询。