MySQL查询以获取范围内的计数

标签 mysql sql database

我的数据库快照

enter image description here

我想获取指定范围内出现的 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/

相关文章:

mysql - 这是一个使用 GROUP BY 和 ORDER BY 的 SQL 连接,它将生成 # 个订单的报告,但它不起作用

MySQL 日期时间字段 - 无法写入日期

sql - 如何将数据数组插入数据库表中?

java - 对单个 derby 数据库的多次访问

php - 生成.txt 然后强制下载

php - CakePhp:防止同时插入相同信息的重复调用

mysql - 在 BigQuery 中查询表

java - Android 编程 SQL PHP

sql - 数据库 - 表之间的关系

php - 将特定日期的多个时差相加