2017-08-05 164 views
1

我的数据库的快照MySQL查询范围

enter image description here

我想pcl_No目前的数量在规定范围内获得数(SUM(tv_land + tv_imp)

我已经写了查询,但我越来越无效使用组错误的

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

+0

您的数据表明'pcl_no'是唯一的。有没有每个重复? –

+0

'pcl_no'在数据库中是唯一的 –

回答

2

我觉得你只是想:

select sum((tv_land + tv_imp) between 0 and 10000) as count0_10000 
from tax_l2006 
where red_date = 0; 

MySQL的对待真正的布尔为 “1” 的数字背景和“:

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更简单地写0“为false,所以总结布尔值计算它的真实次数。

对于其余列,您可以遵循相同的模式。

如果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; 

然而,数据表明列是唯一的,所以额外的聚集不必要。

+0

它的工作!谢谢 –