mysql - 如何在一列中对不同的行进行分组?
问题描述
我有一个项目网站,需要在一个栏中汇总所有预算类别。
例如,我有一列包含:
分类:
水,电,气,租金,住院费,医药,个人护理,健身,
我想选择总和
水、电、气、租金
并将其命名为水电费。
与总和相同
住院费、医药费、个人护理、健身
作为医疗保健。
我应该使用什么sql语句?
任何帮助将不胜感激
解决方案
您可能会有其他表格,或者此表格上的另一列,将特定账单映射到一般组或类别
然后,您将运行一个查询(如果您将类别组放在主表中)
SELECT categorygroup, sum(amount)
FROM bills
GROUP BY categorygroup
或者(如果您有单独的表加入)
SELECT bcg.categorygroup, sum(amount)
FROM bills b INNER JOIN billcategorygroups bcg ON b.category=bcg.category
GROUP BY bcg.categorygroup
然后,您将维护表格,例如(主表格样式中的类别):
Bills
Category, CategoryGroup, Amount
---
Electricity, Utility, 123
Water, Utility, 456
或者(单独的表格以使用组样式映射类别)
BillCategoryGroups
Category, CategoryGroup
---
Water, Utility
Electricity, Utility
ETC
有些东西必须映射电力 -> 公用事业,水 -> 公用事业等。我可能会有一个单独的表格,因为它很容易重组。如果您决定 Cellular 不再是 Utility 而是 Personal,那么只需在映射表中更改它就会更改所有报告。它还有助于防止拼写错误和影响报告的数据输入错误 - 如果您使用单表路线并将甚至一张电费账单记为 Utitily,那么它会在报告中获得自己的行。使用单独的表格也可以轻松添加新类别。所有这些事情都可以用单表和大更新语句等来完成,但我们有充分的理由对数据进行“规范化”
推荐阅读
- azure - Azure 数据工厂中使用数据流的舍入转换无法正常工作
- git - 如何从 git 中的 bitbucket 自动合并中排除 pom.xml
- python - 过滤掉嵌套在列表中的元组,删除某些索引中的特定值?
- download - 如何使用 JMeter 测试 xlsx/csv 和其他文件的下载过程?
- javascript - 有没有办法在nodeJS中获取移动和删除操作的进度?
- python - AttributeError:“ImmutableDenseNDimArray”对象在尝试绘制多个方程时没有属性“could_extract_minus_sign”
- postgresql - Postgres 按条件排序
- c# - 通过 C# 中的 Microsoft Graph API 在 Microsoft 团队常规频道中发布消息时出现禁止错误
- php - Docker Nextcloud 无法加载 Collabora Online - 请稍后再试
- snowflake-cloud-data-platform - 为什么很少有 query_id 没有出现在 query_history 中?