如何根据特定年龄范围查找付款总额

问题描述 投票:0回答:1

我正在尝试解决 MySQL 中的一个问题,其中有一个保险表,通过该表我需要根据年龄范围找到总付款额。比如0-10有一定金额支付,11-20有一定金额等等。

我编写了以下代码来生成年龄范围

SELECT * FROM 
(
SELECT 
    CASE
        WHEN age < 11 THEN '0-10'
        WHEN age > 10 AND age< 21 THEN '11-20'
        WHEN age > 20 AND age< 31 THEN '21-30'
        WHEN age > 30 AND age< 41 THEN '31-40'
        WHEN age > 40 AND age< 51 THEN '41-50'
        WHEN age > 50 AND age< 61 THEN '51-60'
    END AS age_range
    FROM insurance
) age_table
GROUP BY age_range
ORDER BY age_range;

我现在想做的是抓取付款并根据年龄范围进行求和。我想不通

sql mysql database group-by subquery
1个回答
0
投票

你需要一个

conditional sum
:

SELECT 
  SUM(CASE WHEN age < 11 THEN amount END) AS '0-10',
  SUM(CASE WHEN age BETWEEN 11 AND 20 THEN amount END) AS '11-20',
  SUM(CASE WHEN age BETWEEN 21 AND 30 THEN amount END) AS '21-30',
  SUM(CASE WHEN age BETWEEN 31 AND 40 THEN amount END) AS '31-40',
  SUM(CASE WHEN age BETWEEN 41 AND 50 THEN amount END) AS '41-50',
  SUM(CASE WHEN age BETWEEN 51 AND 60 THEN amount END) AS '51-60'
FROM insurance;

请参阅此 fiddle 以及一些示例数据。

© www.soinside.com 2019 - 2024. All rights reserved.