我想知道如何计算连续空单元格的次数。
例如
|unique|col1|col2|col3|col4|col5|col6|col7|col8|col9|col10| |0001 | | 1 | 1 | 1 | | | | | 1 | | |0002 | 1 | | | 1 | 1 | 1 | | 1 | | | |0003 | | 1 | 1 | | | | | | | | |0004 | | | | 1 | | | | | | | |0005 | 1 | | | 1 | | | 1 | | | 1 | |0006 | | 1 | 1 | 1 | | | | | 1 | |
我想要归还的是0001(6),0002(4),0003(8),004(9),005(6),006(6)
我似乎无法弄清楚所有数据并在php或javascript中处理它。
请帮忙。
答案 0 :(得分:1)
我使用CASE
语句获取空值,然后我得到col
到col9
的总和。见下文:
SELECT
unique,
(CASE col='' THEN 1 else 0 END
+
CASE col1='' THEN 1 else 0 END
+
CASE col2='' THEN 1 else 0 END
+
CASE col3='' THEN 1 else 0 END
+
CASE col4='' THEN 1 else 0 END
+
CASE col5='' THEN 1 else 0 END
+
CASE col6='' THEN 1 else 0 END
+
CASE col7='' THEN 1 else 0 END
+
CASE col8='' THEN 1 else 0 END
+
CASE col9='' THEN 1 else 0 END) AS CountEmptyCell
FROM YourTable
答案 1 :(得分:0)
您可以使用如下表达式:
select unique, (col1 is null) + (col2 is null) + . . . + (col10 is null)
MySQL将布尔值视为数值上下文中的整数,其中1表示true,0表示false。因此,这会计算具有NULL
值的列数。
这可用于计算任何值。所以,如果通过"空"你的意思是''
而不是NULL
,那么:
select unique, (col1 = '') + (col2 = '') + . . . + (col10 = '')
答案 2 :(得分:0)
我希望这会对你有所帮助。
SELECT `unique`,
SUM(CASE t.`col` IS NULL OR t.`col` = '' THEN 1 ELSE 0 END) AS `col_count`,
SUM(CASE t.`col1` IS NULL OR t.`col1` = '' THEN 1 ELSE 0 END) AS `col1_count`,
...
...
FROM MYTABLE t
这个答案实际上是由@dnagirl为这个问题(Find the count of EMPTY or NULL columns in a MySQL table)实现的。
请看一下。