【发布时间】:2021-01-30 01:35:27
【问题描述】:
我们试图解决的问题在此使用一个简单的(并且故意亚规范化的)表来解释。
示例架构和数据
create table expense_profile
(
id INT UNSIGNED AUTO_INCREMENT,
name VARCHAR(10),
category VARCHAR(16),
percentage DECIMAL(15,2),
PRIMARY KEY(id)
);
INSERT INTO expense_profile(name, category, percentage)
VALUES('Alice', 'Housing', 15), ('Alice', 'Transportation', 5),
('Alice', 'Food', 25), ('Alice', 'Utilities', 5),
('Alice', 'Healthcare', 5), ('Alice', 'Personal', 3),
('Bob', 'Transportation', 7), ('Bob', 'Food', 18),
('Bob', 'Healthcare', 8), ('Bob', 'Personal', 20);
在这张表中,我们占了 Alice 支出的 58% 和 Bob 支出的 53%。其中暗示爱丽丝 42% 的开支和鲍勃 47% 的开支属于“其他”类别。
Q)是否有一个查询可以让我们为指定用户列出所有类别,包括“其他”类别?
例如,我们希望 Bob 得到以下输出:
+------+----------------+------------+
| name | category | percentage |
+------+----------------+------------+
| Bob | Transportation | 7.00 |
| Bob | Food | 18.00 |
| Bob | Healthcare | 8.00 |
| Bob | Personal | 20.00 |
| Bob | Other | 47.00 |
+------+----------------+------------+
【问题讨论】:
-
这看起来像是一道作业题。请发布您的努力,以便我们可以帮助您在查询中遇到问题。一种解决方案涉及带有
UNION的基本 SELECT。