如何仅选择具有至少2个非缺失值的行

时间:2019-12-11 16:31:27

标签: sql

如何编写查询,以便获取每个ID的列中至少有2个非null值的行数?在下面的示例中,将有2行具有2个或更多个非null值。

enter image description here

在以下查询中,“>”附近出现错误的语法错误:

SELECT *
FROM db1
WHERE (var1 IS NOT NULL) + (var2 IS NOT NULL) + (var3 IS NOT NULL) + (var4 IS NOT NULL) >= 2 ;

1 个答案:

答案 0 :(得分:1)

您的代码应该适用于MySql,所以我想它不是您使用的数据库。
使用标准SQL可以使用CASE表达式:

SELECT *
FROM db1
WHERE 
  CASE WHEN (var1 IS NOT NULL) THEN 1 ELSE 0 END + 
  CASE WHEN (var2 IS NOT NULL) THEN 1 ELSE 0 END + 
  CASE WHEN (var3 IS NOT NULL) THEN 1 ELSE 0 END + 
  CASE WHEN (var4 IS NOT NULL) THEN 1 ELSE 0 END >= 2 ;