如何计算oracle sql中表的所有列中零的数量
假设您有一个名为 db_table1 的数据库表,其中包含数百列,其中大多数包含大量 0。
我试图计算每列的零数并将其除以列的长度,以便我可以看到每列中零的比率。
下面的代码给出了每列中空值的比率。但我无法将其修改为计数 0 而不是空值
任何帮助将不胜感激
SELECT column_name, (num_nulls/ (SELECT COUNT(*) FROM db_table)*100)
FROM all_tab_columns
WHERE table_name='table’
示例数据:
col_1 | col_2 | col_3 |
---|---|---|
0.000 | 0.000 | 0.000 |
0.000 | 0.000 | 14.857 |
3.548 | 0.000 | 0.000 |
0.000 | 0.000 | 0.000 |
0.000 | 0.000 | 0.000 |
0.000 | 11.586 | 0.000 |
预期输出:
All_Columns | Ratio_of_Zeros |
---|---|
col_1 | 65.5 |
col_2 | 73.5 |
col_3 | 48.6 |
简而言之,我需要每列中的零总数除以总行数,这给出了每列中零的百分比或比率,这样我就可以像这样对待零null 并消除该列(如果超过)百分之 60 的零可以说...
Suppose you have a database table named db_table1 with hundreds of columns and most of them contain lots of 0's.
I'm trying to count zeros for each column and divide it by the length of column so I can see the ratio of zeros in each column.
The below code gives me the ratio of nulls in each column. But I couldn't revise it to count 0's instead of nulls
Any help will be appreciated
SELECT column_name, (num_nulls/ (SELECT COUNT(*) FROM db_table)*100)
FROM all_tab_columns
WHERE table_name='table’
Sample data:
col_1 | col_2 | col_3 |
---|---|---|
0.000 | 0.000 | 0.000 |
0.000 | 0.000 | 14.857 |
3.548 | 0.000 | 0.000 |
0.000 | 0.000 | 0.000 |
0.000 | 0.000 | 0.000 |
0.000 | 11.586 | 0.000 |
Expected Output:
All_Columns | Ratio_of_Zeros |
---|---|
col_1 | 65.5 |
col_2 | 73.5 |
col_3 | 48.6 |
Briefly I need the total number of zeros in every column divided by total row number which gives me the percent or ratio of zeros in each column so I can treat zeros like null and eliminate the column if it has more than 60 percent zeros lets say...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用:
You can use:
您可以使用:
生成 SQL 语句并从最后一行中删除
UNION ALL
并执行它。如果您有表:
那么生成的语句(删除最后的
UNION ALL
)为:执行的输出为:
db<>fiddle 此处
You can use:
To generate an SQL statement and remove the
UNION ALL
from the last line and execute it.If you have the table:
Then the statement generated (with the final
UNION ALL
removed) is:And the output of executing that is:
db<>fiddle here