首页 > 解决方案 > 如何在一列中对不同的行进行分组?

问题描述

我有一个项目网站,需要在一个栏中汇总所有预算类别。

例如,我有一列包含:

分类:

水,电,气,租金,住院费,医药,个人护理,健身,

我想选择总和

水、电、气、租金

并将其命名为水电费。

与总和相同

住院费、医药费、个人护理、健身

作为医疗保健。

我应该使用什么sql语句?

任何帮助将不胜感激

标签: mysqlsqldatabasegroup-by

解决方案


您可能会有其他表格,或者此表格上的另一列,将特定账单映射到一般组或类别

然后,您将运行一个查询(如果您将类别组放在主表中)

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,那么它会在报告中获得自己的行。使用单独的表格也可以轻松添加新类别。所有这些事情都可以用单表和大更新语句等来完成,但我们有充分的理由对数据进行“规范化”


推荐阅读