Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将记录分组到Postgres中的三个预定义存储桶中_Sql_Postgresql - Fatal编程技术网

Sql 将记录分组到Postgres中的三个预定义存储桶中

Sql 将记录分组到Postgres中的三个预定义存储桶中,sql,postgresql,Sql,Postgresql,考虑下表,我如何将这些分数分为三组(不超过):小于等于150、介于150和350之间、大于350 id | score ----+------- 1 | 5 2 | 5 3 | 5 4 | 4 5 | 5 6 | 4 7 | 4 8 | 4 9 | 2 10 | 2 11 | 6 12 | 205 13 | 250 13 | 400 14 |

考虑下表,我如何将这些分数分为三组(不超过):小于等于150、介于150和350之间、大于350

 id | score
----+-------
  1 |     5
  2 |     5
  3 |     5
  4 |     4
  5 |     5
  6 |     4
  7 |     4
  8 |     4
  9 |     2
 10 |     2
 11 |     6
 12 |   205
 13 |   250
 13 |   400
 14 |   105
 15 |   900
 16 |   1300
我试过这个方法:

select (score/100)*100 || '-' || (score/100)*100 + 100 as scorerange,count(*)
from scores group by score/100 order by score/100;
这就是结果:

 scorerange | count
------------+-------
 0-100      |    11
 100-200    |     1
 200-300    |     2
 400-500    |     1
 900-1000   |     1
 1300-1400  |     1
(6 rows)

它将分数分组,但不包括我需要的三个桶。

这将为您提供所需的范围:

SELECT 
    CASE WHEN min(score) <= 150 THEN '*-150'
         WHEN min(score) <= 350 THEN '151-350'
         ELSE '350-*'
         END AS scorerange, #A comma is needed here right after scorerange
    count(*)
FROM scores
GROUP BY score <= 150, score <= 350;
选择

当最小值(分数)时,这将为您提供所需的范围:

SELECT 
    CASE WHEN min(score) <= 150 THEN '*-150'
         WHEN min(score) <= 350 THEN '151-350'
         ELSE '350-*'
         END AS scorerange, #A comma is needed here right after scorerange
    count(*)
FROM scores
GROUP BY score <= 150, score <= 350;
选择

当最小值(分数)时,这将为您提供所需的范围:

SELECT 
    CASE WHEN min(score) <= 150 THEN '*-150'
         WHEN min(score) <= 350 THEN '151-350'
         ELSE '350-*'
         END AS scorerange, #A comma is needed here right after scorerange
    count(*)
FROM scores
GROUP BY score <= 150, score <= 350;
选择

当最小值(分数)时,这将为您提供所需的范围:

SELECT 
    CASE WHEN min(score) <= 150 THEN '*-150'
         WHEN min(score) <= 350 THEN '151-350'
         ELSE '350-*'
         END AS scorerange, #A comma is needed here right after scorerange
    count(*)
FROM scores
GROUP BY score <= 150, score <= 350;
选择

CASE WHEN min(score)此查询将为您提供预期输出

SELECT CASE WHEN Score <= 150 THEN '0-150'
         WHEN Score >= 350 THEN '150-350'
         ELSE '350+' END AS SCORE_RANGE,             
         COUNT(*) AS COUNT
    FROM SCORES
    GROUP BY SCORE_RANGE
当分数=350时选择案例,然后选择“150-350”
否则“350+”以得分范围结束,
计数(*)作为计数
从分数
按得分范围分组

此查询将为您提供预期的输出

SELECT CASE WHEN Score <= 150 THEN '0-150'
         WHEN Score >= 350 THEN '150-350'
         ELSE '350+' END AS SCORE_RANGE,             
         COUNT(*) AS COUNT
    FROM SCORES
    GROUP BY SCORE_RANGE
当分数=350时选择案例,然后选择“150-350”
否则“350+”以得分范围结束,
计数(*)作为计数
从分数
按得分范围分组

此查询将为您提供预期的输出

SELECT CASE WHEN Score <= 150 THEN '0-150'
         WHEN Score >= 350 THEN '150-350'
         ELSE '350+' END AS SCORE_RANGE,             
         COUNT(*) AS COUNT
    FROM SCORES
    GROUP BY SCORE_RANGE
当分数=350时选择案例,然后选择“150-350”
否则“350+”以得分范围结束,
计数(*)作为计数
从分数
按得分范围分组

此查询将为您提供预期的输出

SELECT CASE WHEN Score <= 150 THEN '0-150'
         WHEN Score >= 350 THEN '150-350'
         ELSE '350+' END AS SCORE_RANGE,             
         COUNT(*) AS COUNT
    FROM SCORES
    GROUP BY SCORE_RANGE
当分数=350时选择案例,然后选择“150-350”
否则“350+”以得分范围结束,
计数(*)作为计数
从分数
按得分范围分组

通过一个
案例
语句分组,但要确保边界正确:

选择案例

当评分时,通过
案例
语句分组,但要确保得到正确的界限:

选择案例

当评分时,通过
案例
语句分组,但要确保得到正确的界限:

选择案例

当评分时,通过
案例
语句分组,但要确保得到正确的界限:

选择案例
什么时候得分