如何从3个不同但相同的表中获得列值大于0的列数

8wtpewkr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(246)

这个问题在这里已经有答案了

在mysql中使用union和order by子句(11个答案)
两年前关门了。
我有三张这样的table:

Table1

ID    x     y      z    
1     0     30     0     
2    60      0     0     
3    10     30     0     
4    30     30    30 

Table2

ID    x       y      z    
1     0       0     50  
2     0      10      0     
3    10      30      0     
4     0       0      0 

Table3

ID     x      y      z    
1     20     30      0     
2      0      0     40     
3      0     30      0     
4     30      0     20

我希望能够查询这个并返回id,其中的列数大于0作为该行的值。结果如下:

ID    Count
1      4
2      3
3      5
4      5
bfnvny8b

bfnvny8b1#

这是丑陋的,但这是简单的,应该做你所要求的。

select id, sum(case when x > 0 then 1 else 0 end + case when y > 0 then 1 else 0 end + case when z > 0 then 1 else 0 end) count
from (
select id, x, y, z from table1
union all
select id, x, y, z from table2
union all
select id, x, y, z from table3) tables
group by id;

相关问题