sql - SQL 请求中缺少行,其中计数为 0(按值范围分组)

标签 sql database sqlite

我的 SQL 请求中存在一些缺失行的问题。我想显示按值分组的出现次数,并且即使它们在间隔中没有值,表格也需要显示它们。

这是现在显示的内容

|---------------------|------------------|
|      Category       |       Amount     |
|---------------------|------------------|
|        <= 0         |        34        |
|---------------------|------------------|
|       ]0 - 1]       |        18        |
|---------------------|------------------|
|         > 2         |        25        |
|---------------------|------------------|

这就是我需要它显示的内容

|---------------------|------------------|
|      Category       |       Amount     |
|---------------------|------------------|
|        <= 0         |        34        |
|---------------------|------------------|
|       ]0 - 1]       |        18        |
|---------------------|------------------|
|       ]1 - 2]       |        0         |
|---------------------|------------------|
|         > 2         |        25        |
|---------------------|------------------|

到目前为止我的代码是:

SELECT  t.range AS Category,
      Count( * )  AS [Amount],
      FROM (
           SELECT value,
                  CASE 
                     WHEN (value <= 0) THEN ' <= 0 ' 
                     WHEN (value > 0 AND value <= 1) THEN ' ]0 - 1]' 
                     WHEN (value > 1 AND value <= 2) THEN ' ]1 - 2]' 
                     WHEN (value > 2 ) THEN ' > 2 ' 
                  END AS range
            FROM Table
       )
       t
GROUP BY t.range;

关于如何解决这个问题有什么想法吗?

谢谢你了!

最佳答案

只需执行多个查询,然后将它们全部合并:

SELECT ' <= 0 ' AS category, count(*) as Amount FROM MyTable WHERE value <= 0
UNION ALL
SELECT ' ]0 - 1]' AS category, count(*) FROM MyTable WHERE value > 0 AND value <= 1
UNION ALL
SELECT ' ]1 - 2]' AS category, count(*) FROM MyTable WHERE value > 1 AND value <= 2
UNION ALL
SELECT ' > 2 ' AS category, count(*) FROM MyTable WHERE value > 1 AND value > 2 

关于sql - SQL 请求中缺少行,其中计数为 0(按值范围分组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366995/

相关文章:

database - 数据库管理系统一书中的 B+ 树解决方案

mysql - 错误 : column specified more than once in Postgres

java - 从sqlite数据库中选择日文字符

php - mysql PHP 中连接表的问题

android - 如何使用推送通知同步 SQLite 和 MySQL 数据库?

android - 如果 AsyncTask 被取消,该怎么办?

c++ - 为什么 sqlite3pp 样本会这样?

mysql - 通过计算另一个表的结果来更新表

mysql - 对具有特定值的数据进行分组

mysql if语句跨Group by语句在同一行