表格中有一个表格和5列。我想要列值不为null的每列的行计数。
column1 column2 column3 column4 column5
1 2 2 2 2
2 2 2 NULL 2
3 NULL 2 2 NULL
NULL NULL 2 2 NULL
NULL NULL 2 2 NULL
我应该得到像3,2,5,4,2
这样的输出答案 0 :(得分:4)
像
这样的东西SELECT
COUNT(Column1),
COUNT(Column2),
COUNT(Column3),
COUNT(Column4),
COUNT(Column5)
FROM Table1
返回行中expr的非NULL值的数量 通过SELECT语句检索。
COUNT(*)有点不同,它返回的计数 检索的行数,无论它们是否包含NULL值。
答案 1 :(得分:4)
提供的解决方案对我不起作用。我必须按如下方式修改代码:
SELECT
COUNT(NULLIF(Column1,'')),
COUNT(NULLIF(Column2,'')),
COUNT(NULLIF(Column3,'')),
COUNT(NULLIF(Column4,'')),
COUNT(NULLIF(Column5,''))
FROM Table1
答案 2 :(得分:1)
根据COUNT()
函数引用,它只计算非NULL
项。所以,
SELECT
COUNT(column1) AS column1,
COUNT(column2) AS column2,
COUNT(column3) AS column3,
COUNT(column4) AS column4,
COUNT(column5) AS column5
FROM yourtable;
应该返回您想要的信息。
答案 3 :(得分:1)
我认为上面的回复 - 只是确保字段名称按照它们在两个区域中的顺序匹配。
select column1, column2, column3, column4, column5
from ( select
sum(column1 is not null) as column1,
sum(column2 is not null) as column2,
sum(column3 is not null) as column3,
sum(column4 is not null) as column4,
sum(column5 is not null) as column5
from mytable) x
答案 4 :(得分:0)
您可以使用子查询:
select column1, column2, column3, column4, column5
from ( select
sum(column1 is not null) as column1,
sum(column2 is not null) as column2,
sum(column3 is not null) as column3,
sum(column4 is not null) as column4,
sum(column5 is not null) as column5
from mytable) x