Mit*_*tch 4 sql stored-procedures
我有一个名为Person的表,其中包含一个名为PersonAge的字段.我需要按年龄段对年龄进行分组,即'12及以下','13 -17','18 -25','25及以上',并使用存储过程返回此结果集.
理想情况下,我需要返回2个字段,'Age Band','Total'就像这样
Age band Total 12 and under 5 13 - 17 8 18 - 25 7 25 and over 10
ang*_*son 13
创建一个包含您的乐队的表格:
CREATE TABLE agebands
(
id INT NOT NULL PRIMARY KEY,
lower_bound INT NOT NULL,
upper_bound INT NOT NULL
)
CREATE INDEX IDX_agebands_bounds ON (lower_bound, upper_bound)
Run Code Online (Sandbox Code Playgroud)
然后用您的数据填充它:
INSERT INTO agebands VALUES (1, 0, 12)
INSERT INTO agebands VALUES (2, 13, 17)
INSERT INTO agebands VALUES (3, 18, 24)
INSERT INTO agebands VALUES (4, 25, 199)
Run Code Online (Sandbox Code Playgroud)
然后加入它:
SELECT
lower_bound, upper_bound,
COUNT(*) AS number_of_people
FROM
persons
INNER JOIN agebands
ON person_age BETWEEN lower_bound AND upper_bound
GROUP BY
lower_bound, upper_bound
ORDER BY
lower_bound
Run Code Online (Sandbox Code Playgroud)
这允许灵活地调整频带.当然,这里使用UNION的另一个答案也是可用的,如果您可以/不会将另一个表添加到数据库中,这更合适.
归档时间: |
|
查看次数: |
2473 次 |
最近记录: |