mysql - SELECT CASE 与聚合函数
问题描述
我有三张表:indi(个人)、consump(消费)和manu(制造商)
我想按年龄类别(我有实际年龄)对个人进行分组,并显示制造商消耗的总量。
所以是这样的:
Age Category | Manufacturer | Total Volume Consumed
15 - 24 | Coca Cola | 10ML
| Pepsi | 25 ML
现在按照这个示例(如何在 mysql 中按年龄段对用户数进行分组),我创建了如下年龄段:
SELECT
CASE
WHEN age >=15 AND age <=24 THEN '15-24'
WHEN age >=25 AND age <=34 THEN '25-34'
WHEN age >=35 AND age <=44 THEN '35-44'
WHEN age >=45 AND age <=54 THEN '45-54'
WHEN age >=55 AND age <=66 THEN '54-64'
WHEN age >=65 THEN '65+'
END AS ageband
链接表的键id
用于indi
和consump
表以及code
链接consump
和manu
表。现在多个代码附加到一个制造商,因为制造商生产不止一种类型的饮料。
因此,该where
条款将包括以下内容:
indi.id = consump.id AND consump.code = manu.code
所以我的思考过程如下(我确实意识到我需要包含case语句,但我不知道我把它放在哪里 - 作为子查询的某个地方?)
SELECT age, manufacturer, SUM(volume) as 'Total Volume Consumed'
FROM indi, consump, manu
WHERE indi.id = consump.id AND consump.code = manu.code
GROUP BY ageband
解决方案
只需添加案例和适当的组
SELECT CASE
WHEN age >=15 AND age <=24 THEN '15-24'
WHEN age >=25 AND age <=34 THEN '25-34'
WHEN age >=35 AND age <=44 THEN '35-44'
WHEN age >=45 AND age <=54 THEN '45-54'
WHEN age >=55 AND age <=66 THEN '54-64'
WHEN age >=65 THEN '65+'70
END as ageband
, manufacturer
, SUM(volume) as 'Total Volume Consumed'
FROM indi
INNER JOIN consump ON indi.id = consump.id
INNER JOIN manu ON consump.code = manu.code
GROUP BY ageband, manufacturer
推荐阅读
- ubuntu - VSCode 在包含 node_modules 的项目中冻结 linux
- android - 更改父窗口 Xamarin.Forms
- c++ - 尝试获取指向向量大小的指针时出现编译错误
- python - 二维数组 - 切片和索引
- python - 更改熊猫中的特定列
- php - 如何在 php exec 中使用 cgroups
- c - 如何使用 CFFI 在 C 中访问 Python dunder 方法?
- java - 无法推断基本网址。这在使用动态 servlet 注册或 API 位于 API Gateway swagger 2.10.5 后面时很常见
- flutter - 颤振:未处理的异常:无法加载资产:资产/语言/en
- swift - Vapor 4 - 创建一个列出所有可用路线的路线