mysql - 查询按范围限制对记录进行分组

标签 mysql sql select group-by

我有一个如下表。

CREATE TABLE budgets(limit_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
                     upper_limit INT, 
                     lower_limit INT);

表中数值如下

INSERT INTO budgets(lower_limit, upper_limit)
             VALUES(0, 15000),
                   (10200, 15300),
                   (15200, 17002),
                   (30000, 45050),
                   (17002, 30000),
                   (27002, 30500),
                   (30500, 35200),
                   (45200, 55000),
                   (55000, 65020),
                   (25000, 30000),
                   (40000, 60000),
                   (65000, 75000);

我使用了如下的选择查询来获取值

SELECT 'Betw 0 to 25000', COUNT(limit_id)
  FROM budgets
 WHERE lower_limit>=0  AND  upper_limit<=25000
 UNION ALL
SELECT 'Betw 25000 to 50000', COUNT(limit_id)
  FROM budgets
 WHERE lower_limit>=25000  AND  upper_limit<=50000
 UNION ALL
 SELECT 'Betw 50000 to 75000',COUNT(limit_id)
   FROM budgets
  WHERE lower_limit >=50000  AND  upper_limit<=75000

我希望所有行都在上述限制范围内负责。

表中有 12 条记录。

我希望所有记录都属于任何一个范围类别。但是通过运行查询,在某些条件下我只得到 9 行。

输出为

Between 0 to 25000          3
Between 25000 to 50000      4
Between 50000 to 75000      2 

剩余3条记录不属于任何范围。

帮助我知道我是否在数据库设计中犯了错误,或者我为数据库编写了错误的查询 以上要求

最佳答案

这会起作用

 SELECT 'Betw 0 to 25000', COUNT(limit_id)
  FROM budgets
 WHERE upper_limit>=0  and upper_limit<=25000  
 UNION ALL
SELECT 'Betw 25000 to 50000', COUNT(limit_id)
  FROM budgets
 WHERE upper_limit>=25000  and upper_limit<=50000   
 UNION ALL
SELECT 'Betw 50000 to 75000',COUNT(limit_id)
  FROM budgets
 WHERE upper_limit>=50000  and upper_limit<=75000   

输出将是

Between 0 to 25000          3
Between 25000 to 50000      5
Between 50000 to 75000      4

关于mysql - 查询按范围限制对记录进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14273910/

相关文章:

sql - 在 SQL Server 中结合使用条件运算符和 INTERSECT

mysql - 年份更改未在 mysql 服务器中给出结果

sql - Firebird存储过程内的"select..into"

php - $criteria->在 yii 中选择

php - 将我的文件链接到任何内容并覆盖 mysql.sock

javascript - 进度条、最大值并重置为 100%

php 订阅者 sql 查询太大?

java - JSoup 从 unix 中的 HTML 选择

php - 为 HTML 编码 mySQL 文本?

mysql - 如何使 MySQL 全文索引保持最新?