SQL查询中多计数列求和的实现问题求助
SQL查询中多计数列求和的实现问题求助
嘿,我来帮你捋捋这个问题~你想要把三个计数列的结果加起来得到total列对吧?先看你写的当前查询,这里有个明显的问题:SUM(COUNT(s_code, b_code, d_code)) 这种写法不符合SQL语法——COUNT函数没法同时接收多个列作为参数这么用,而且SUM套COUNT也不是实现你需求的正确方式。
其实实现起来很简单,你只需要把三个COUNT的结果直接相加就行,因为每个COUNT已经算出了对应列的非空值数量,直接求和就得到total了。修正后的查询应该是这样:
SELECT region, COUNT(s_code) AS count_s, COUNT(b_code) AS count_b, COUNT(d_code) AS count_d, COUNT(s_code) + COUNT(b_code) + COUNT(d_code) AS total FROM shilpy GROUP BY region ORDER BY region;
这里补充一点小说明:COUNT(column) 统计的是该列非NULL值的数量。如果你的需求是统计「这三个列中至少有一个有值的行数」(也就是去重统计每行,不管有几个列有值都只算1次),那写法会不一样,但从你的原SQL来看,应该只是想把三个列各自的计数结果加总,上面的写法就完全满足你的需求啦。
备注:内容来源于stack exchange,提问作者Felipe Felix
相关产品推荐
相关产品推荐

