假设您已经有年龄的计算值。您可以使用CASE表达式和GROUP BY不同年龄段。
例如,
SQL> WITH data(person_id, age) AS(
2 SELECT 1, 3 FROM dual UNION ALL
3 SELECT 2, 4 FROM dual UNION ALL
4 SELECT 3, 8 FROM dual UNION ALL
5 SELECT 4, 9 FROM dual UNION ALL
6 SELECT 5, 15 FROM dual UNION ALL
7 SELECT 6, 25 FROM dual UNION ALL
8 SELECT 7, 32 FROM dual UNION ALL
9 SELECT 8, 44 FROM dual UNION ALL
10 SELECT 9, 67 FROM dual UNION ALL
11 SELECT 10, 75 FROM dual
12 )
13 SELECT (
14 CASE
15 WHEN age <= 5
16 THEN 'age <= 5'
17 WHEN age > 5 AND age <= 10
18 THEN 'age > 5 and age <= 10'
19 WHEN age > 10 AND age <= 30
20 THEN 'age > 10 and age <= 30'
21 ELSE 'age > 30'
22 END) age_group,
23 COUNT(*)
24 FROM data
25 GROUP BY (
26 CASE
27 WHEN age <= 5
28 THEN 'age <= 5'
29 WHEN age > 5 AND age <= 10
30 THEN 'age > 5 and age <= 10'
31 WHEN age > 10 AND age <= 30
32 THEN 'age > 10 and age <= 30'
33 ELSE 'age > 30'
34 END)
35 /
AGE_GROUP COUNT(*)
---------------------- ----------
age <= 5 2
age > 10 and age <= 30 2
age > 5 and age <= 10 2
age > 30 4
SQL>
如果您没有年龄范围,则可以使用解码对确切年龄进行硬编码。