我的数据库快照
我想获取指定范围内出现的 pcl_No
的计数(SUM(tv_land + tv_imp)
)
我已经写了一个查询,但是我得到了 Invalid use of group 错误
select
count(CASE WHEN sum(tv_land+tv_imp) BETWEEN 0 AND 10000 THEN 1 END) as count0_10000
from
tax_l2006
where red_date = 0
GROUP BY pcl_no
示例输出
0-10000 10000-20000 30000-40000 >40000
2 3 1 8
最佳答案
我想你只是想:
select count(CASE WHEN tv_land + tv_imp BETWEEN 0 AND 10000 THEN 1 END) as count0_10000
from tax_l2006
where red_date = 0;
我会在 MySQL 中更简单地写成:
select sum( (tv_land + tv_imp) between 0 and 10000 ) as count0_10000
from tax_l2006
where red_date = 0;
MySQL 在数字上下文中将真 bool 值视为“1”,将假值视为“0”,因此对 bool 值求和就是计算它为真的次数。
您可以对其余列采用相同的模式。
如果 pcl_no
不是唯一的并且您需要对值求和,那么您可以使用子查询:
select sum(total between 0 and 10000) as count0_10000
from (select pcl_no, sum(tv_land + tv_imp) as total
from tax_l2006
where red_date = 0
group by pcl_no
) p;
但是,您的数据表明该列是唯一的,因此不需要额外的聚合。
关于MySQL查询以获取范围内的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521939/