如何统计a1a至a1d列范围内至少含2个阳性答案的总行数
多列阳性符合条件行数统计方法
需求说明
统计数据库表中a1a到a1d四列范围内,满足至少包含2个阳性答案的总行数:字段值1代表阳性,2代表阴性。
实现逻辑
逐行统计a1a、a1b、a1c、a1d四列中值为1的数量,筛选出数量≥2的行后统计总条数即可。
不同数据库实现代码
MySQL
SELECT COUNT(*) AS 符合条件总行数 FROM 你的表名 WHERE (a1a = 1) + (a1b = 1) + (a1c = 1) + (a1d = 1) >= 2;
MySQL中布尔表达式判定为真时返回1,判定为假时返回0,直接相加即可得到单行列阳性总数。
PostgreSQL
SELECT COUNT(*) AS 符合条件总行数 FROM 你的表名 WHERE (a1a = 1)::INT + (a1b = 1)::INT + (a1c = 1)::INT + (a1d = 1)::INT >= 2;
SQL Server
SELECT COUNT(*) AS 符合条件总行数 FROM 你的表名 WHERE CASE WHEN a1a = 1 THEN 1 ELSE 0 END + CASE WHEN a1b = 1 THEN 1 ELSE 0 END + CASE WHEN a1c = 1 THEN 1 ELSE 0 END + CASE WHEN a1d = 1 THEN 1 ELSE 0 END >= 2;
Oracle
SELECT COUNT(*) AS 符合条件总行数 FROM 你的表名 WHERE DECODE(a1a,1,1,0) + DECODE(a1b,1,1,0) + DECODE(a1c,1,1,0) + DECODE(a1d,1,1,0) >= 2;
内容的提问来源于stack exchange,提问作者appson
相关产品推荐
相关产品推荐

