PostgreSQL 检测年龄组



让我们考虑一下表的一部分,如下所示:

id_client | age
-----------+-----
16052 |  65
25027 |  29
25659 |  44
33297 |  32
38750 |  53
43063 |  28
56311 |  48
61721 |  21
104027 |  25
112005 |  40
114389 |  28
114395 |  58

问题是用步长10年来检测年龄组。这不是一种像年龄组分配这样的问题,比如:

SELECT Id_client, Age, CASE
WHEN age BETWEEN 1 AND 10 THEN '1-10'
WHEN age BETWEEN 11 AND 20 THEN '11-20'
WHEN age BETWEEN 21 AND 30 THEN '21-30'
WHEN age BETWEEN 31 AND 40 THEN '31-40'
WHEN age BETWEEN 41 AND 50 THEN '41-50'
WHEN age BETWEEN 51 AND 60 THEN '51-60'
WHEN age BETWEEN 61 AND 70 THEN '61-70'
WHEN age BETWEEN 71 AND 80 THEN '71-80'
WHEN age BETWEEN 81 AND 90 THEN '81-90'
ELSE 'NaN' END AS Group
FROM table

在这种情况下,请求必须显示类似的内容

|  Groups  |
|----------|
|  (1-10)  |
|  (11-20) |
|  (21-30) |
|  (31-40) |
|  (41-50) |
|  (51-60) |
|  (61-70) |
|  (71-80) |
|  (81-90) |

其中CCD_ 1和CCD_。我目前正在使用PostgreSQL 12。你知道什么功能吗?或者有什么想法,怎么做?

只使用字符串操作怎么样?

select '(' || floor( (age - 1) / 10 ) || '-' || floor( (age + 9) / 10 ) || ')' as grp

最新更新