我有一个表,其中包含许多列,例如30-31个数字。我必须根据其ID计算特定行中多少个空值的百分比。请帮我。谢谢
您可以将结果设置为ID,然后COUNT('X') - COUNT(X)
按ID分组。
但说实话我想我会做
SELECT
(
CASE WHEN col1 IS NULL THEN 1 ELSE 0 END +
CASE WHEN col2 IS NULL THEN 1 ELSE 0 END +
...
CASE WHEN col31 IS NULL THEN 1 ELSE 0 END
) / 0.31
FROM
t
如果您担心要编写很多代码,则可以让前端为每个表编写代码(执行aselect * from table where 1=0
并使用返回结果集的列名称构建sql),甚至可以编写SQL,因为大多数情况下DB有一些列出所有列的表:
--pseudocode because you never told us what your db is
SELECT CONCAT(
'CASE WHEN ', columnname, ' IS NULL THEN 1 ELSE 0 END +')
FROM alltablecolumns
WHERE tablename = 'x'
例如,如果您使用MySQL,则有INFORMATION_SCHEMA- https://dev.mysql.com/doc/refman/8.0/en/information-schema.html
另外,像sublime这样的优质文本编辑器也可以提供帮助,因为它可以放置多个光标,因此您可以一次键入几行代码。.描述表,获取列名,粘贴并使其位于31行,然后按住鼠标中键按钮并在每个单词的开头在屏幕下方画一条线以放入31个光标,然后只需键入CASE WHEN,按END,然后键入THEN 1 ELSE ...
图片来源:programmersought.com
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句