Sql 将记录分组到Postgres中的三个预定义存储桶中
考虑下表,我如何将这些分数分为三组(不超过):小于等于150、介于150和350之间、大于350Sql 将记录分组到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 |
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+”以得分范围结束,
计数(*)作为计数
从分数
按得分范围分组
通过一个案例
语句分组,但要确保边界正确:
选择案例
当评分时,通过案例
语句分组,但要确保得到正确的界限:
选择案例
当评分时,通过案例
语句分组,但要确保得到正确的界限:
选择案例
当评分时,通过案例
语句分组,但要确保得到正确的界限:
选择案例
什么时候得分